6

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

这是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();
?>

这是带有所有回声的网络输出:

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


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

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

4

6 回答 6

5

这部分代码产生它:

$result=mysql_query($query);

echo $result;

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

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

另请注意,这些mysql_*功能已被弃用,不鼓励使用它们。php手册中的注释:

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

mysqli_query()

PDO::查询()

于 2012-06-20T16:18:20.127 回答
4

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

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

于 2012-06-20T16:17:51.087 回答
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请关注其他人的回答。

于 2012-06-20T16:20:44.460 回答
2

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

返回您需要的结果:

$row = mysql_fetch_array( $query );

echo $row['item']
于 2012-06-20T16:19:01.877 回答
2

您需要对结果资源做一些事情。试试这个:

$result=mysql_query($query);

//echo $result;

$result_array = mysql_fetch_assoc( $result );

print_r( $result_array );

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

您应该item='Inception'直接在 MySQL 中运行查询以确认结果是您所期望的。

于 2012-06-20T16:19:40.193 回答
1

你不能这么简单地回显结果。您需要将结果获取到例如数组:

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

或一个对象:

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

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

于 2012-06-20T16:22:49.673 回答