带有$ statement->执行的PHP内部服务器错误

时间:2012-11-16 13:56:14

标签: php error-handling mysqli prepared-statement internal-server-error

所以我在Mysqli上使用PHP,并且我试图运行一个非常基本的准备语句:

$stmt = $mysqli->prepare("SELECT field FROM blubb WHERE id=? AND username=? LIMIT 1");

while($doingStuff){
  // Do Stuff
  $stmt->bind_param("is", $id, $username);
  $stmt->execute();
  // Do Stuff
}

但是当我尝试运行执行时,我收到内部服务器错误。

我已经设置了

error_reporting(E_ALL);
ini_set("display_errors", 1);

在我的脚本中,我想我可能会收到错误消息,知道什么是错的,但它仍然是内部服务器错误。

我也试过

$stmt->execute() or die("error msg");

但仍然是相同的错误,服务器错误日志中也没有任何内容。 我还试过将$ id明确地转换为int,没有帮助。

如何调试此错误并找到错误?我似乎无法从我的脚本中获得正确的错误消息,我不知道可能出现什么问题,因为我使用的其他准备好的Statemens运行良好。

编辑:好的我刚刚找到了问题的根源,我正试图这样做

while($doStuff){
  method($stmt1, $stmt2)
}
method($stmt1, $stmt2){
  // handle $stmt1
  // stuff
  // handle $stmt2
}

根据这篇文章,这是不可能的 http://www.ioncannon.net/programming/889/php-mysqli-and-multiple-prepared-statements/

我通过简单地改变

来修复错误
while($doingStuff){
  // Do Stuff
  $stmt->bind_param("is", $id, $username);
  $stmt->execute();
  // Do Stuff
}

while($doingStuff){
  // Do Stuff
  $stmt->bind_param("is", $id, $username);
  $stmt->execute();
  $stmt->store_result();
  // Do Stuff
}
第一个声明

但是我仍然想知道如何获得实际的错误而不是内部服务器错误,因为我使用共享主机我无法更改php.ini

1 个答案:

答案 0 :(得分:1)

尝试在PHP配置上设置display_errorslog_errorserror_log指令,而不是从脚本:php.ini或者,如果允许和支持,.htaccess。