首先,我知道这是一个重复的问题,我也在问同样的问题。但是我已经阅读了所有与同一问题相关的解决方案,但是当我按照建议的解决方案时,它会触发更多的警告。 这就是我在代码中的内容
if($stmt = $mysqli->prepare("SELECT * FROM emergency WHERE id=?"))
{
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($id, $patient_seen_u, $patient_seen_a);
$stmt->fetch();
// show the form
renderForm($patient_seen_u, $patient_seen_a, NULL, $id);
$stmt->close();

获取
警告:mysqli_stmt :: bind_result():绑定变量的数量不包含 匹配预备语句中的字段数 第122行的C:\ xampp \ htdocs \ gsd \ emergency \ records.php
所以我将代码更改为
if($stmt = $mysqli->prepare("SELECT date, patient_seen_u, patient_seen_a FROM emergency WHERE id ='?'"))
{
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($id, $date, $patient_seen_u, $patient_seen_a);
$stmt->fetch();
// show the form
renderForm($date, $patient_seen_u, $patient_seen_a ,NULL, $id);
$stmt->close();
}

只是为了得到这些警告;
警告:mysqli_stmt :: bind_param():变量数量不匹配 准备语句中的参数数量 第119行的C:\ xampp \ htdocs \ gsd \ emergency \ records.php
警告:mysqli_stmt :: bind_result():绑定变量的数量不包含 匹配预备语句中的字段数 第122行的C:\ xampp \ htdocs \ gsd \ emergency \ records.php
也尝试这样做;
if($stmt = $mysqli->prepare("SELECT `date`, `patient_seen_u`,`patient_seen_a` FROM `emergency` WHERE `id` = '?'"))
{
$stmt->bind_param("iii", $id);
$stmt->execute();
$stmt->bind_result($id, $date, $patient_seen_u, $patient_seen_a);
$stmt->fetch();
// show the form
renderForm($date, $patient_seen_u, $patient_seen_a ,NULL, $id);
$stmt->close();
}

但代码也无效。帮助,我该如何解决?
答案 0 :(得分:1)
删除占位符周围的引号,并添加id列以匹配bind_result
的排列顺序
if($stmt = $mysqli->prepare("SELECT id, date, patient_seen_u, patient_seen_a FROM emergency WHERE id =?")) {
$stmt->bind_param("i", $id);// bind as integer
$stmt->bind_result($id, $date, $patient_seen_u, $patient_seen_a);
答案 1 :(得分:1)
if($stmt = $mysqli->prepare("SELECT id, date, patient_seen_u, patient_seen_a FROM emergency WHERE id =?"))
{
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($id, $date, $patient_seen_u, $patient_seen_a);
$stmt->fetch();
// show the form
renderForm($date, $patient_seen_u, $patient_seen_a ,NULL, $id);
$stmt->close();
}
现在它工作正常。谢谢。