我刚开始使用mysqli准备好的语句。当我遇到准备好的UPDATE
声明的问题时,我仍在努力掌握它。
搜索完SO后,我找到了this question。
但是没有答案;这个问题与我的问题非常相似:
<?php
$pin = '12345' // spaceballs reference
$email = 'somebody@email.com';
$update = "UPDATE users SET sec_pin = ? WHERE email = ?;";
$stmt = $dbc->prepare($update);
$stmt->bing_param("is", $rand, $dbuseremail);
$stmt->execute();
?>
我正在返回500内部错误。我该如何解决这个问题?
答案 0 :(得分:1)
您可以在php documentation for mysqli_stmt::bind_param中找到准备好的陈述的一些很好的例子。
现在您的代码示例的具体原因:
工作样本:
<?php
$dbc = new mysqli('127.0.0.1', 'db_user', 'db_password', 'db_name');
$pin = '12345'; // spaceballs reference
$email = 'somebody@email.com';
$update = "UPDATE users SET sec_pin = ? WHERE email = ?;";
$stmt = $dbc->prepare($update);
$stmt->bind_param("is", $pin, $email);
$stmt->execute();
?>
在PHP中调试
在尝试调试php代码时,您可能会发现这些资源很有用:
答案 1 :(得分:0)
将bind_param()拼错为bing_param()。
也不用担心在bind_param参数中使用i作为整数,只需在你传递的所有变量上使用s作为字符串;可以防止不必要的错误,并且无需担心您传递的变量。
只是要清理你的代码,以及修复一些可疑的变量名称错误。
<?php
$pin = '12345'; // spaceballs reference
$email = 'somebody@email.com';
$update = "
UPDATE
users
SET
sec_pin = ?
WHERE
email = ?";
$stmt = $dbc->prepare($update);
$stmt->bind_param("ss", $pin, $email);
$stmt->execute();
?> //If all of your PHP file is only PHP, then leave this closing tag off.