我正在获取当前数据库中不存在的返回值。即使我更改了我的查询,返回数组保持相同但缺少值。这怎么可能是我做错了什么? 我的MYSQL服务器版本是10.0.22,这个服务器给了我正确的结果。 所以问题必须在PHP中。
我的代码:
$select_query = "SELECT process_state.UID
FROM process_state
WHERE process_state.UpdateTimestamp > \"[given time]\"";
$result = mysql_query($select_query, $link_identifier);
var_dump($result);
结果:
array(1) {
[1]=> array(9) {
["UID"]=> string(1) "1"
["CreationTimestamp"]=> NULL
["UpdateTimestamp"]=> NULL
["ProcessState"]=> NULL
}
}
解决方案: 我在我的程序中找到了这个代码。该程序使用了同名我的。此函数将MYSQL结果转换为数组。这发生在结果视图和我的脚本之间。这样做是为了使结果可读。
parent::processUpdatedAfter($date);
功能:
public function processUpdatedAfter($date)
{
$result = parent::processUpdatedAfter($date);
$array = Array();
if($result != false)
{
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$array[$row["UID"]]["UID"] = $row["UID"];
$array[$row["UID"]]["CreationTimestamp"] = $row["CreationTimestamp"];
$array[$row["UID"]]["UpdateTimestamp"] = $row["UpdateTimestamp"];
$array[$row["UID"]]["ProcessState"] = $row["ProcessState"];
}
return $array;
}
return false;
}
我编辑了这个,我的脚本现在运行正常,感谢所有的帮助。
答案 0 :(得分:4)
您var_dump
数据库资源句柄而不是您查询的数据
您必须使用某种fetch
进程来实际检索查询生成的数据。
$ts = '2016-09-20 08:56:43';
$select_query = "SELECT process_state.UID
FROM process_state
WHERE process_state.UpdateTimestamp > '$ts'";
$result = mysql_query($select_query, $link_identifier);
// did the query work or is there an error in it
if ( !$result ) {
// query failed, better look at the error message
echo mysql_error($link_identifier);
exit;
}
// test we have some results
echo 'Query Produced ' . mysql_num_rows($result) . '<br>';
// in a while loop if more than one row might be returned
while( $row = mysql_fetch_assoc($result) ) {
echo $row['UID'] . '<br>';
}
但是我必须提到每次使用the
mysql_
新代码中的数据库扩展 a Kitten is strangled somewhere in the world 它已被弃用,已经存在多年,并且在PHP7中一直存在。 如果您只是学习PHP,请花时间学习PDO
或mysqli
数据库扩展。 Start here
答案 1 :(得分:3)
请注意,new ProvidePlugin({
jQuery: 'jquery',
$: 'jquery',
jquery: 'jquery'
})
只返回资源而非数据。
您需要var_dump($result);
才能获取记录。
MYSQLi面向对象的示例:
mysql_fetch_*
旁注:我建议您使用mysqli_*
或PDO
,因为不推荐使用<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT process_state.UID
FROM process_state
WHERE process_state.UpdateTimestamp > \"[given time]\"";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
echo $row['UID'];
}
}
else
{
echo "No record found";
}
$conn->close();
?>
并在PHP 7中关闭。
答案 2 :(得分:1)
$select_query = "SELECT `UID` FROM `process_state ` WHERE `UpdateTimestamp` > \"[given time]\" ORDER BY UID DESC ";
$result = mysql_query($select_query, $link_identifier);
var_dump($result);
试试这个希望它会起作用