PHP MySQLi INSERT无法正常工作,没有错误

时间:2011-07-25 01:43:16

标签: 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编程 - &gt;,我习惯使用_。这种方法仍然受支持吗?

4 个答案:

答案 0 :(得分:13)

您混合了过程式和面向对象的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时,如何使用这些函数非常清楚。

答案 1 :(得分:4)

$mysqli_query($mysqli, $sql);

应该是

mysqli_query($mysqli, $sql);

OR

$mysqli->query($sql);

以后

$mysqli->insert_id();

答案 2 :(得分:2)

看看这个:

'nlcc_ver1'.'tUsers'

你必须在这里使用反引号作为引用字符:

`nlcc_ver1`.`tUsers`

但是(假设$ mysqli_query中的$只是一个错字):除非你在执行查询后立即使用mysqli_error(),否则不会出现查询错误。

答案 3 :(得分:0)

插入前设置AutoCommit = 1

$mysqli->query('SET AUTOCOMMIT = 1');