bind_param不工作(在非对象上)mysqli预处理语句

时间:2015-04-09 18:32:38

标签: php mysql database mysqli prepared-statement

到目前为止,我已经阅读了大约15篇关于此类问题的帖子,但这些都没有能够帮助我。

我有以下代码:

$stmt3 = $mysqli->prepare("SELECT cc.name, cc.company, cc.email FROM (`case_contacts` cc) WHERE cc.case_id=? AND cc.end_date IS NULL");
if (is_object($stmt3)) {
    $stmt3 -> bind_param("i", $case_id);
} else {
    die('Connection issue');
}
$stmt3 -> execute();
$stmt3 -> bind_result($name, $company, $email);
while ($stmt3->fetch()) {

当我执行时,建议"连接问题"。但是在$stmt3之前,我可以非常高兴地看到var_dump $mysqli

我已经手动将查询输入phpmyadmin和在线查询检查器,并且都确认它是有效的。

我已经检查了用户的权限,他们都很好。事实上,我正在重写从mysql到mysqli的查询,并希望使用预处理语句。所以数据库用户是一样的。我对其他准备好的陈述没有任何问题,这更复杂,所以我真的不知所措。

我甚至过度使用了'`'我知道我应该在每个查询中对语句进行报道!

任何建议,调试技巧都会很棒。我看了一下,我发现的那些没有提供输出。

1 个答案:

答案 0 :(得分:1)

mysqli_stmt::prepare ( string $query )返回TRUEFALSE阅读更多内容:

  

http://php.net/manual/en/mysqli.prepare.php

您可以使用此示例:

<?php

$mysqli = mysqli_connect('localhost', 'root', 'admin', 'test');

$case_id = 603;

$sentence =  $mysqli->stmt_init();
if($sentence->prepare("SELECT name, company, email FROM case_contacts WHERE case_id = ? AND end_date IS NULL")) {

    $sentence->bind_param("i", $case_id);
    $sentence->execute();
    $sentence->bind_result($name, $company, $email);

    while ($sentence->fetch()) {
        echo $name . ' - ' . $company . ' - ' . $email;
    }   
}