This question already has answers here:
Fatal error: Call to undefined method mysqli_stmt::get_result()
(2个答案)
6年前关闭。
我不确定为什么会一直收到此错误,但是我需要一些帮助...我只是在尝试允许允许插入之前,检查数据库以查看记录是否存在。
如果有人可以伸出援手,那就太好了。
无需麻烦的额外选择查询。
无需麻烦的绑定结果。
无需麻烦处理大量嵌套的if语句(其逻辑有缺陷,实际上破坏了整个混乱)。
(2个答案)
6年前关闭。
我不确定为什么会一直收到此错误,但是我需要一些帮助...我只是在尝试允许允许插入之前,检查数据库以查看记录是否存在。
$input_errors = array();
if (!empty($_POST['username'])) {
$user = $_POST['username'];
} else {
$input_errors['username'] = "Must fill out username";
}
$email = filter_input(INPUT_POST, 'usermail', FILTER_VALIDATE_EMAIL);
if (false === $email) {
$input_errors['usermail'] = "Not a valid email address";
}
if(count($input_errors) > 0) {
print_r($input_errors); die();
}
$sql = "SELECT COUNT(*) as amount FROM people WHERE username = ?
OR email = ?";
if ($stmt = $mysqli->prepare($sql)) {
$stmt->bind_param("ss", $user, $email);
$stmt->execute();
$results = $stmt->get_result();
$data = mysqli_fetch_assoc($results);
if ($data['amount'] > 0)
{
print "User already exists";
}
}
else {
$stmt = $mysqli->stmt_init();
if (!$stmt) {
echo "Init failed";
} else {
$cmd = "INSERT INTO people (username, email, sign_up_date) VALUES (?, ?, NOW() )";
if ($stmt->prepare($cmd)) {
$stmt->bind_param('ss', $user, $email );
$stmt->execute();
echo $stmt->affected_rows . " row(s) inserted";
$stmt->close();
} else {
echo "Prepare failed";
}
mysqli_close($mysqli);
}
}
如果有人可以伸出援手,那就太好了。
最佳答案
由于某些原因,我无法忍受这么长而多风的代码。
您实际需要的只是
$cmd = "INSERT IGNORE INTO people (username, email, sign_up_date) VALUES (?, ?, NOW() )";
$stmt->prepare($cmd);
$stmt->bind_param('ss', $user, $email);
$stmt->execute();
if (!$stmt->affected_rows)
{
print "User already exists";
}
无需麻烦的额外选择查询。
无需麻烦的绑定结果。
无需麻烦处理大量嵌套的if语句(其逻辑有缺陷,实际上破坏了整个混乱)。
10-08 15:23