与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;,我习惯使用_。这种方法仍然受支持吗?
答案 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');