PHP MySQLI准备语句在执行时返回false

时间:2015-03-01 06:53:28

标签: php mysql sql database mysqli

所以,我有一个准备好的语句,在执行时返回false,但错误代码为0,意味着没有错误,尽管由于它没有被执行,显然是一个错误..

我准备了这样的声明:

if(!$prepared_statements['GetAdmUsers'] = $conn->prepare('SELECT nome FROM Alunos WHERE professor = ?'))
echo "<br/>Erro: " . $conn->error;

以那种方式执行(来自函数的片段)

                if(!$p['GetAdmUsers']->bind_param('i', $id))
                echo "<br/>Erro: ". $c->error;
            if(!$p['GetAdmUsers']->execute())
                echo "<br/>Erro: ". $c->error;

在你问我完整的代码之前,我应该说所有的变量和对象都经过测试而且不是问题,代码的其他部分除了用过的变量和对象都没有连接到问题。

提前致谢。

编辑: $ c是mysqli连接对象,errno是0

1 个答案:

答案 0 :(得分:0)

您正在从错误的对象中提取错误。错误存储在语句对象中,而不是连接对象中。参见:

http://php.net/manual/en/mysqli-stmt.error.php

/* execute query */
$stmt->execute();

printf("Error: %s.\n", $stmt->error);

请注意,代码使用相同的对象来执行语句并检索错误。在您的情况下,您需要使用:

echo "<br />" . $p['GetAdmUsers']->error;