当前位置: 首页 > 知识库问答 >
问题:

如何准备绑定变量的数量以匹配准备好的语句中的字段数量[重复]

霍襦宗
2023-03-14

首先,我知道这是一个重复的问题,我问的是同样的问题。但是我已经阅读了所有与相同问题相关联的解决方案,但是当我遵循建议的解决方案时,它将触发更多的警告出现。这就是我的代码

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

获取

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():绑定变量的数目与C:\xampp\htdocs\gsd\emergency\records.php第122行中准备好的语句中的字段数目不匹配

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

但代码也不起作用。我该怎么解决这个?

共有1个答案

田翔
2023-03-14

删除占位符周围的引号,并添加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);
 类似资料: