MySQL没有提取正确的数据? (PHP)

时间:2012-06-20 16:15:54

标签: php mysql

这很简单。 编辑:更新了问题并添加了第四个回声。

这是PHP代码:

<?php

$ratings="3";
$item="Inception";

$query="SELECT * FROM items WHERE item = '". $item ."' LIMIT 1";

echo $query;

echo "<br />";

$result=mysql_query($query);

echo $result;

echo "<br />";

while ($row = mysql_fetch_array($result)) { 
    $item_id = $row['item_id'];
    echo $item_id;
    echo "<br />";
 }  

  $query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')";

  echo $query_two;
  $sql = mysql_query($query_two);
  mysql_close();
?>

这是带有所有echo的web输出:

SELECT * FROM items WHERE item = 'Inception' LIMIT 1
Resource id #7


INSERT INTO ratings (rating, item_id), VALUES (' 3 ', ' ')

为什么我的$ item_id是空白的? (资源ID下面的第三行)

6 个答案:

答案 0 :(得分:5)

这段代码产生了它:

$result=mysql_query($query);

echo $result;

它显示Resource...因为它是resource类型,它只是查询的一种特殊处理程序,它不像普通类型(例如字符串或int),所以它没有任何可读性打印。

如果要从查询中打印数据,则必须首先获取它。

另请注意,不推荐使用这些mysql_*函数,不建议使用它们。从php手册中注意:

  

不鼓励使用此扩展程序。相反,MySQLi或PDO_MySQL   应该使用扩展名。另请参见MySQL:选择API指南和   相关FAQ以获取更多信息。替代此功能   包括:

     

mysqli_query()

     

PDO ::查询()

答案 1 :(得分:4)

这与数据库中的ID没有任何关系。

这个(Result#7)表示这个结果资源是你的php脚本执行创建的第七个资源。

答案 2 :(得分:3)

另外

$query_two = "INSERT INTO ratings (rating, item_id), VALUES (' {$ratings} ', ' {$item_id} ')";

应该是

$query_two = "INSERT INTO ratings (rating, item_id) VALUES (' {$ratings} ', ' {$item_id} ')";

VALUES之前您有逗号

此外,$item_id似乎是空白的。请检查数据库是否包含item = 'Inception'的数据。

关于Result#7,请关注其他人的答案。

答案 3 :(得分:2)

资源ID来自MySQL查询所在的实际进程/对象。

返回您需要的结果:

$row = mysql_fetch_array( $query );

echo $row['item']

答案 4 :(得分:2)

您需要对结果资源执行某些操作。试试这个:

$result=mysql_query($query);

//echo $result;

$result_array = mysql_fetch_assoc( $result );

print_r( $result_array );

编辑:我看到你更新了你的问题。

您应该直接在MySQL中运行item='Inception'查询,以确认结果符合您的预期。

答案 5 :(得分:1)

你无法回应那么简单的结果。您需要将结果提取到例如数组:

while ($row = mysql_fetch_array($query)) {
  echo $row['a_column'] . "<br />";
}

或对象:

while ($variable = mysql_fetch_object($query) {
 $value = $variable->a_column;
}
echo $value;

还有更多方法,但这只是两个例子