PHP 代码未返回正确的 MySQL 结果
PHP code not returning correct MySQL result
我正在托管服务器上查询来自 MySQL 的一组数据。当我在我的本地机器上执行它时,它运行良好,但在托管服务器上,它没有 returning 任何东西。奇怪的是,当我在托管环境中使用此 GUI 运行 相同的查询时,它会得到 return 结果。
所以这里有一些代码等等
这是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>
Table word_list 只有三列:单词、定义和 set_name
上面的代码应该是 return 行单词和定义。相反,当我检查浏览器控制台时,它 return 如下:
{"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 中复制那个确切的查询并运行它,
以下是 return编辑的:
总结一下这个问题,为什么 GUI 和代码之间的结果存在差异??
更改此行:
$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
我正在托管服务器上查询来自 MySQL 的一组数据。当我在我的本地机器上执行它时,它运行良好,但在托管服务器上,它没有 returning 任何东西。奇怪的是,当我在托管环境中使用此 GUI 运行 相同的查询时,它会得到 return 结果。
所以这里有一些代码等等
这是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>
Table word_list 只有三列:单词、定义和 set_name
上面的代码应该是 return 行单词和定义。相反,当我检查浏览器控制台时,它 return 如下:
{"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 中复制那个确切的查询并运行它,
以下是 return编辑的:
总结一下这个问题,为什么 GUI 和代码之间的结果存在差异??
更改此行:
$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