mysql_query连接NULL结果,但我已成功连接

时间:2016-06-03 10:30:28

标签: php mysql ajax connection mysql-connect

我对mysql有疑问。我是PHP脚本,它将数组从datebase返回到json数据。 我来自“回声”的消息。关于成功连接,但我的结果是等于数组的null。

在资源管理器上的结果我是

Connected successfully

query: SELECT name,id FROM rz_DWzZ'

result: 

RESULT:[]

这是这个脚本。

$conn = mysql_connect($servername, $username, $password);
        mysql_select_db($database);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
$return_arr = array();
$qstring = "SELECT name,id FROM rz_DWzZ";
$result = mysql_query($qstring,$conn);
echo "<br>query: ".$qstring."<br>";
echo "<br>result: ".$result."<br>";
while ($row = mysql_fetch_assoc($result))//loop through the retrieved values
{
        $row['name']=htmlentities(stripslashes($row['name']));
        $row['id']=(int)$row['id'];
        array_push($return_arr,$row);
}
mysql_close($conn); 
echo "<br>RESULT:".json_encode($return_arr); 

1 个答案:

答案 0 :(得分:1)

您未正确检查故障。 mysql _ *()函数在失败时返回boolean FALSE,echo将打印为零长度/不可见字符串。

你必须明确地测试它:

$result = mysql_query(...) or die(mysql_error());
                          ^^^^^^^^^^^^^^^^^^^^^^--method #1

if ($result === false) { // method #2
   die(mysql_error());
}

当然,你不应该使用这些功能。它们已经过时/弃用,而且您的代码现在在较新版本的PHP中无用。你应该使用mysqli或PDO进行任何新的开发。

同样,你还有许多其他错误:

if ($conn->connect_error) {

mysql _ *()函数库从来都不是面向对象的。它纯粹是程序性的,绝对没有任何对象支持。因此,此连接测试将始终失败,因为$conn->connect_error将始终求值为null,这也将转换为布尔值false,这意味着您获得成功的误报。