如何准备绑定变量的数量以匹配预准备语句中的字段数

时间:2017-10-26 04:53:17

标签: php mysql

首先,我知道这是一个重复的问题,我也在问同样的问题。但是我已经阅读了所有与同一问题相关的解决方案,但是当我按照建议的解决方案时,它会触发更多的警告。 这就是我在代码中的内容



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();
}




但代码也无效。帮助,我该如何解决?

2 个答案:

答案 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();
}

现在它工作正常。谢谢。