是什么导致了这个错误? mysqli_stmt :: bind_result():

时间:2018-03-22 17:47:52

标签: php mysql

我正在使用mysqli_prepare()所以我总是得到这个错误。

  

警告:mysqli_stmt :: bind_param():变量数不匹配   第12行download.php中预准备语句中的参数数量

     

致命错误:带有消息的未捕获异常'mysqli_sql_exception'   '没有为准备好的声明中的参数提供数据'   *** gg.php:13堆栈跟踪:#0   \ download.php(13):mysqli_stmt-> execute()#1

     

包含('。')#2 {main}抛出

     第13行

download.php

我查了解其他问题,但我没有设法得到解决方案。

我的代码:

if(isset($_GET['cert_id'])){

$cert_id = $_GET['cert_id'];
$stmt1 = mysqli_prepare($connection,"SELECT cert_id,certificate_id,name_student,hours_com,course_title FROM cert JOIN courses WHERE cert_id = ? AND course_id = certificate_id");
$stmt1->bind_param("iisss",$cert_id,$certificate_id,$name_student,$hours_com,$course_title);
$stmt1->execute();
while(mysqli_stmt_fetch($stmt1))
{
  $pdf = new \setasign\Fpdi\Fpdi();
  $pdf->addPage('L');
  $pagecount = $pdf->setSourceFile('cert.pdf');
  $tplIdx = $pdf->importPage(1);
  $pdf->useTemplate($tplIdx);
  $pdf->SetY(-120);
  $pdf->SetX(35);
  $pdf->SetFont('times', 'B', 35);
  $pdf->cell(20, 10,$name_student,  'C');
  $pdf->SetY(-135);
  $pdf->SetX(135);
  $pdf->SetFont('times', 'B', 35);
  $pdf->cell(90, 100, $course_title, 'C');
  $pdf->SetY(151);
  $pdf->SetX(200);
  $pdf->AddFont('BOOKOSBI','','BOOKOSBI.php');
  $pdf->SetFont('BOOKOSBI','',25);
  $pdf->cell(40, 10, $hours_com 'C');

}
$pdf->Output('certnew.pdf','D');

}

第12行& 13:

$stmt1->bind_param("iisss",$cert_id,$certificate_id,$name_student,$hours_com,$course_title);
$stmt1->execute();

知道这里有什么问题吗?

1 个答案:

答案 0 :(得分:1)

您的查询中的问号是您稍后要添加的值的占位符。它们的数量需要与您要绑定的参数数量相匹配   - 价值来自的地方。但是,在您的示例中,您有一个问号,但之后您尝试绑定五个参数:

$stmt1 = mysqli_prepare(
    $connection,
    "SELECT ... FROM cert JOIN courses WHERE cert_id = ? AND course_id = certificate_id"
);
$stmt1->bind_param(
    "iisss",
    $cert_id, certificate_id, $name_student, $hours_com, $course_title
);

你似乎想要这个:

$stmt1->bind_param("i",$cert_id);