2011-11-09 148 views
1

我的功能得到$status(0误差,1 - 成功),$err_id$field(输入字段的名称)(单位为dB的错误消息的ID)变量,并获取从数据库中的错误信息,给定瓦尔。与MySQL查询有问题

尝试die()在每个步骤中检测到发生错误的位置,同时在函数err之后再放置die($status.$err_id.$field);。没有成功。

删除netbeans。标记调试停止的功能行

$ msg始终为空。无法从数据库中获取它。在php错误日志中没有错误。可能是我的代码有错误?请看一下。

function err($status, $err_id = 0, $field = 0) 
{ 
     global $db; 
     if ($status == 0) { 
       $stmt = $db->prepare("SELECT msg FROM err_msgs WHERE field = ? AND id= ?") or die(htmlspecialchars($db->error)); 
       $stmt->bind_param("si", $field, $err_id) or die(htmlspecialchars($stmt->error)); 
       $stmt->execute() or die(htmlspecialchars($stmt->error)); 
       $stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 

       >>debug stops here>> $stmt->fetch() or die(htmlspecialchars($stmt->error)); 

       response('error', $msg); 
       $stmt->close(); 
       die(); 

     } else { 
       response('success', 'Success!'); 

     } 

} 
+0

检查Apache的错误日志后才能获取?在它有机会记录任何东西之前,可能会杀死php。 –

+0

@MarcB你有任何IM吗?我的Skype:tural.teyyuboglu。请添加我,以便我们可以与您聊天。我头痛,无法工作。尝试了所有可能的方法,只需要另一对开发人员的眼睛从另一个角度查看 –

+0

的代码。对不起,apache错误日志是我能想到的所有东西。没有任何类型的错误信息,诊断几乎是不可能的。 –

回答

0

我忘结合的结果

$stmt->fetch() 
0

尝试切换两行:

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

$stmt->bind_result($msg) or die(htmlspecialchars($stmt->error)); 
$stmt->execute() or die(htmlspecialchars($stmt->error)); 
+1

“请注意,在调用mysqli_stmt_fetch()之前,必须在mysqli_stmt_execute()之后绑定所有列。”请参阅http://www.php.net/manual/en/mysqli-stmt.bind-result.php –

+0

上的文档我在我的网站论坛上进行了一些测试,这两种方式都可以在执行前后使用bind_result进行。我可以发誓,我记得不得不将它从之后切换到之前才能使其工作...... – Frank