2009-07-17 23 views
1

我有一个查询写成mysql_errno和mysql_error始终报告东西

mysql_query($query,$conn) 
    or 
    die(
    "A MySQL error has occurred.<br />Your Query: " . $query . "<br /> Error: (" . mysql_errno() . ") " . mysql_error()); 
    echo "You have been entered into our Database!"; 

此输出

A MySQL error has occurred. 
Your Query: INSERT INTO users (uid, twname, privacy) VALUES (15400743, 'gdhdh', 'accepted') 
Error: (0) 

所以它没有列出任何错误或任何东西。当我复制/粘贴该查询到的phpMyAdmin的SQL选项卡,它成功运行,并DB连接不抛出什么坏事(我知道它的工作原理,因为查询的作品以及其他地方):

function get_db_conn() { 
$conn = mysql_connect($GLOBALS['db_ip'], $GLOBALS['db_user'], $GLOBALS['db_pass']); 
mysql_select_db($GLOBALS['db_name'], $conn); 
return $conn; 

}

关于我能解决什么的想法?我真的很感激它。

+0

你使用哪个版本的php?哪个OS?你是如何安装php的?从源头编译 - 如果是的话,如何?来自xyz的二进制包?这是否总是发生,使用任何sql语句(SELECT,INSERT,UPDATE)? – VolkerK 2009-07-17 07:40:11

+0

Linux 5上的PHP 5。安装在主机 – 2009-07-17 12:18:39

+0

[**请不要在新代码中使用`mysql_ *`函数**](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – TRiG 2014-03-02 20:19:59

回答

2

错误0意味着没有错误发生。

因此,如果在没有错误发生时输出错误的代码正在运行,那么在代码中围绕对mysql_query()函数的调用发生逻辑错误。

从代码中很难判断哪些应该在不同的条件下运行,哪些地方可能存在错误。

以下代码在逻辑上等同于您尝试实现的功能,并应按预期工作。

该代码更清楚地区分调用mysql_query()函数来检查调用函数的结果。我也对代码进行了一些格式化,使其不显示任何水平滚动,尽管这纯粹是可选的。

$queryResult = mysql_query($query, $conn); 
if ($queryResult === false) { 
    $errorMessage = "A MySQL error has occurred.<br />" 
        . "Your Query: ".$query."<br />" 
        . " Error: (".mysql_errno().") ".mysql_error(); 

    die($errorMessage); 
} 
0

我不确定这是否正是您要查找的内容,但函数的参数称为$ query,并且您的错误中的变量为$ your_query,因此$ your_query的值显示在错误,但是谁知道$ query中的内容,所以如果它是NULL,那么可能会导致错误号为0而没有消息。