PHP代码没有返回正确的MySQL结果

时间:2015-07-02 21:25:26

标签: javascript php mysql hosted

我在托管服务器上查询MySQL的一组数据。当我在我的本地机器上执行它时,它工作正常,但在托管服务器上,它没有返回任何东西。奇怪的是,当我使用此GUI为托管环境运行相同的查询时,它确实返回结果。

所以这里有一些代码等。

这是index.php:

<?php

$servername = "username.db.theservername.ether.com";
$mysqllogin = "username";
$mysqlpassword = "thepassword";
$dbName = "StepsMath";
$conn = new mysqli($servername, $mysqllogin, $mysqlpassword, $dbName);

if($conn->connect_error){
    die ("connection failed: " . $conn->connect_error);
    echo "connection failed.";
}

$set_name = 'test_set';
$query = "select word, definition from word_list where set_name = '$set_name'";
$result = $conn->query($query);
$conn->close();
             // *********************************************
echo $query; // <-------- *******this prints the query*******
             // *********************************************
$result = mysqli_fetch_array($result);

?>

<!DOCTYPE html>
<html lang="en"><head>
<title>this is a title</title>

<script type="text/javascript">
    var json = '<?= json_encode($result) ?>';
    var word_list = JSON.parse(json);
    console.log(word_list);     //line 24
    console.log(json);          //line 25
    function getUserId(){
        return '<?= $user_id ?>';
    }
    if(!getUserId()) window.location = 'login.html';
</script>
</head>
<body>body stuff</body>
</html>

表word_list只有三列:word,definition和set_name

上面的代码应该返回单词和定义的行。相反,当我在浏览器控制台中检查时,它会返回以下内容:

{"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null}

这是运行的查询:

select word, definition from word_list where set_name = 'test_set'

如果我复制那个确切的查询并在托管服务器的MySQL GUI中运行它,

GUI MySQL environment provided by GoDaddy

返回以下内容:

Result of running the same query in GUI

总结一下这个问题,为什么GUI和代码之间的结果存在差异?

1 个答案:

答案 0 :(得分:2)

更改此行:

$result = mysqli_fetch_array($result);

到此:

while ($row = mysqli_fetch_assoc($result)) {
    $res[] = $row;
}
var_dump($res);

您之前获得的信息:{"current_field":null,"field_count":null,"lengths":null,"num_rows":null,"type":null}都是mysqli_result属性。

阅读本文,它将帮助您理解您做错了什么:http://php.net/manual/en/class.mysqli-result.php