为什么我从php中的mysql查询得到更多结果然后我要求的?

时间:2016-09-22 10:47:18

标签: php mariadb

我正在获取当前数据库中不存在的返回值。即使我更改了我的查询,返回数组保持相同但缺少值。这怎么可能是我做错了什么? 我的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;
}

我编辑了这个,我的脚本现在运行正常,感谢所有的帮助。

3 个答案:

答案 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,请花时间学习PDOmysqli数据库扩展。   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);

试试这个希望它会起作用