【问题标题】:SQL issue within phpphp中的SQL问题
【发布时间】:2013-04-17 11:54:38
【问题描述】:

非常感谢您的回答,他们真的帮了我很多!

我很好奇我做错了什么:我无法从 SQL 语句中获取任何值。

我的数据库表结构:

我的代码:

include('config.php');
$id = $_GET['id'];

$query = "SELECT * FROM upload WHERE id = '$id'";
echo $query."<br/>";


$result = mysql_query($query) or die('error');
print_r($result);
echo $result['id'];

我在测试时得到以下信息:

"SELECT * FROM upload WHERE id = '1'

资源 ID #2"

但是有一个值为 '2' 的 id,但为什么它没有显示在我的 html 中? 只有使用 'while' 语句,我才能得到想要的结果:

while($results = mysql_fetch_array($result)) 
    {
        echo $results['filetitle'];
    }

对于单个结果是否需要此 while 语句?我的意思是,只能有一个 ID。

【问题讨论】:

  • 您使用的是an obsolete database API,应该使用modern replacement。您也容易受到SQL injection attacks的影响,现代 API 可以让您更轻松地从 defend 中获得。
  • 您没有运行查询。你回显了一个完美的字符串。我没有看到与数据库的实际连接发生在任何地方。
  • $row = mysql_fetch_array($result);回声 $row['id'];
  • 好吧,mysql_query() 返回一个 mysql 资源而不是结果,要获得所需的结果,您需要使用 mysql_fetch_arraymysql_fetch_assoc 等。参考this
  • 与数据库的连接写在config.php中。 $connect = mysql_connect($localhost, $dbuser, $dbpass) or die($db_error1); mysql_select_db("$dbname", $connect); ($dbname 等不是空的,但我不会把它们放在这里,哈哈。顺便说一下,连接工作正常,与其他参数一起使用。只是好奇为什么我必须在这里使用 while 语句。)

标签: php mysql sql


【解决方案1】:

资源就是资源。它包含许多行。当只返回一行时,它不是特殊情况。

如果您知道只有一个结果,则不必使用while,但仍需要使用mysql_fetch_array 或其他方法从中提取第一行。

【讨论】:

  • 谢谢,你所有的回答真的很有帮助!我知道这是“旧”的 SQL 方式,但我从未正确学习过 mySQLi。完成这项工作后,我想使用 mySQLi 进行练习 :)
【解决方案2】:

$result 是一个矩阵,每行都有一个输出。因此,要访问id,您首先必须指明行。

例如,$result[ 0 ][ 'id' ]

不过,最好通过while($results = mysql_fetch_array($result)) 表达式来实现。

【讨论】:

  • $result = mysql_query($query) or die('error'); echo $result[0]['id']; 这个不行,它不会返回任何东西.. :) 还是我做错了什么?
  • 哦,你是对的!如果要检查所有矩阵层次结构,请输入print_r($result)
【解决方案3】:

SELECT 语句返回Resource ID #,您必须使用mysql_fetch_array, mysql_fetch_assoc 函数迭代您的结果。

【讨论】:

    【解决方案4】:

    试试这个

    $result[0]['id'];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-30
      • 2011-10-12
      • 2020-05-17
      • 1970-01-01
      • 2011-07-29
      • 2020-05-07
      • 1970-01-01
      相关资源
      最近更新 更多