我在下面的代码中被困了几个小时。我不知道如何解决这个错误。
注意:未定义的变量:第19行的D:\ xampp \ htdocs \ recon \ register.php中的mysqli
致命错误:未捕获错误:在D:\ xampp \ htdocs \ recon \ register.php中调用null上的成员函数query():19堆栈跟踪:在D:\ xampp \ htdocs中抛出#0 {main}第19行\ recon \ _register.php
<?php
$conn = new mysqli('localhost', 'root', '', 'user');
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$uname = $_POST['uname'];
$psw = $_POST['psw'];
$options = [
'cost' => 12,];
$hashedpassword= password_hash($psw, PASSWORD_BCRYPT, $options);
$result = $mysqli->query("SELECT username FROM registration WHERE username = '$uname'");
$row_count = $result->num_rows;
if($row_count == 1) {
echo 'User already exists, try another one.'; }
else {
$query = "INSERT INTO user (username, password) VALUES(?, ?)";
$statement = $mysqli->prepare($query);
$statement->bind_param('ss', $uname, $hashedpassword);
if($statement->execute())
{
print 'Success! Last inserted record : ' .$statement->insert_id .'<br />';
}
else
{
die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
$statement->close();
}
?>
答案 0 :(得分:2)
您正在声明名为mysqli
的{{1}}实例。这表示您与DB的连接。您应该在变量$conn
而不是(未定义)变量$conn
上调用方法。所以即。你的第19行应该是:
$mysqli
另外,为防止在您的查询/网页上使用SQL-Injection,您应该使用prepared statements无处不在(包括$result = $conn->query("SELECT username FROM registration WHERE username = '$uname'")
)。
答案 1 :(得分:0)
如果拼写错误构造函数,则会出现此错误。 例如,php中构造函数的正确语法,
__construct(){}
你可能写错了,
__contruct(){}
同样,检查其他功能。