PHP MySQLi INSERT 不工作,没有错误

标签 php mysqli

不同于this question ,但类似的是,我在向数据库中添加信息时不会收到错误消息。

$sql = "INSERT INTO 'nlcc_ver1'.'tUsers' ('userID', 'userName', 'userPassword', 'userHash',
'user_first_name', 'user_last_name', 'user_corps', 'is_admin', 'is_trg', 'is_sup', 'is_co')
VALUES (NULL, '" . $userName . "', '" . $hash . "', '" . $salt . "', '" . $f_name . "', '" .
$l_name . "', '" . $corps . "', '" . $admin . "', '" . $trg . "', '" . $sup . "', '" . $co . "')";
$hostname_Database = "localhost";
$database_Database = "nlcc_ver1";
$username_Database = "root";
$password_Database = "";
$mysqli = new mysqli($hostname_Database, $username_Database, $password_Database, $database_Database); 
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$result = $mysqli_query($mysqli, $sql);
echo "Query run. Inserted UserID " . mysqli_insert_id($mysqli) . "<br />";

插入换行符以避免横向滚动...它在网页上说 mysqli_insert_id($mysqli) 是 0,并且没有向我的数据库中的表添加任何内容。我没有看到连接到数据库的错误出现,MySQL 正在我的服务器上运行,并且 phpinfo() 显示加载了 MySQL 和 MySQLI 扩展。这只是一台开发机器,所以不用担心安全性(即没有密码)。我试过用谷歌搜索这个问题,但没有找到太多。我不知道使用 -> 进行面向对象的 PHP 编程,我习惯使用 _。现在还支持这种方法吗?

最佳答案

您混合了过程式和面向对象的 MySQLi 风格。这导致您尝试使用像 mysqli_query($mysqli) 这样的函数,而不是像 $mysqli->query() 这样的成员函数。您的 $mysqli 是一个对象,而不是资源句柄。

而且,您没有对查询执行任何错误检查。如果是,您会发现您错误地使用了单引号而不是反引号来分隔表和字段名称。

$sql = "INSERT INTO `nlcc_ver1`.`tUsers`
       (`userID`, `userName`, `userPassword`, `userHash`,
        `user_first_name`, `user_last_name`, `user_corps`,
        `is_admin`, `is_trg`, `is_sup`, `is_co`)
       VALUES (NULL, '" . $userName . "', '" . $hash . "', '" . $salt . "', '" .
               $f_name . "', '" . $l_name . "', '" . $corps . "', '" . $admin .
               "', '" . $trg . "', '" . $sup . "', '" . $co . "')";

$hostname_Database = "localhost";
$database_Database = "nlcc_ver1";
$username_Database = "root";
$password_Database = "";

$mysqli = new mysqli($hostname_Database, $username_Database, $password_Database, $database_Database); 
if (mysqli_connect_errno()) {
   printf("Connect failed: %s\n", mysqli_connect_error());
   exit();
}

$result = $mysqli->query($sql);
if (!$result) {
   printf("%s\n", $mysqli->error);
   exit();
}

echo "Query run. Inserted UserID " . $mysqli->insert_id . "<br />";

我强烈建议使用 the manual作为您的引用。当您使用过程式或面向对象风格的 MySQLi 时,如何使用这些函数是非常清楚的。

关于PHP MySQLi INSERT 不工作,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6811070/

相关文章:

php - 奇怪的 PHP 错误,它从何而来?代码点火器

php - mysqli_query() 期望参数 1 为 mysqli,第 46 行 ~\index.php 中给出的资源

php - 如何让stmt_fetch在mysqli中将结果转为数组

php - 在 Windows 中向 PHP 添加 Mysqli 扩展时出错

php - 迭代表中的列表值

php - 如何让 mysqli 在 SQL 语句中使用 DELIMITER?

php - 如何解码ionCube加密文件?

php - 如何在通过 PHP 函数连接到 FTP 时测量 PHP 中的 FTP 传输速度

php - 无法填充组合框选项

javascript - 如何只在android设备中显示DIV?