我的 PHP/SQL 注册脚本出了什么问题


What is wrong with my PHP/SQL registration script?

我正在尝试使用 PHP/SQL 制作我的第一个注册脚本。我的部分代码不起作用:

if(!$errors){
    $query = "INSERT INTO users (email, password) VALUES ($registerEmail, $registerPassword)";
    if(mysqli_query($dbSelected, $query)){
        $success['register'] = 'Successfully registered.';
    }else{
        $errors['register'] = 'Registration did not succeed.';
    }
    }

当我测试我的代码时,我收到错误"注册未成功"。作为参考,$errors和$success是数组。我的脚本的这一部分有什么问题吗?

$dbSelected是:

    $dbLink = mysqli_connect('localhost', 'root', 'PASSWORD');
    if (!$dbLink) {
        die('Can''t connect to the database: ' . 'mysqli_error());
    }
    $dbSelected = mysqli_select_db($dbLink, 'devDatabase');
    if (!$dbSelected) {
        die('Connected database, but cannot select
            devDatabase: ' . 'mysqli_error());
    }

确定我正在连接并选择数据库。

任何帮助将不胜感激!我对 PHP/SQL 很陌生,所以请原谅我的任何菜鸟错误。

引用如下字符串

$query = "INSERT INTO users (email, password) VALUES ('$registerEmail', '$registerPassword')";

你也可以做

echo $query;

并在浏览器上获取输出,复制并粘贴到 PHPMyAdmin 中并从那里执行它。它应该告诉您查询出了什么问题。

我建议您使用预准备语句,因为在SQL语句中使用字符串连接容易受到SQL注入攻击。参考 PHP mysqli 准备的示例

首先,PHP 正在弃用mysql_函数,您应该迁移到 PDO。

另外,请确保您使用的是较旧的mysql_函数,因此使用mysql_real_escape_string

此外,您的条目需要引用。下面是查询字符串的重做:

$query = "INSERT INTO users (email, password) VALUES ('{$registerEmail}', '{$registerPassword}')";