从MySQL数据库中选择数据时出错

时间:2014-03-22 13:13:45

标签: php mysql

我想从我的数据库中获取数据。我正在尝试以下代码,但是我收到了错误。

代码:

$song_id = $_GET['song_id'];

function getsongdetails($field) 
{
    $query = "SELECT `$field` FROM `songs` WHERE `id`='$song_id'";
    if ($query_run = mysql_query($query)) {
        if ($query_result = mysql_result($query_run, 0, $field)) {
            return $query_result;
        }
    }
}

,错误是这样的:

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 10 in /home/a1939662/public_html/details.php on line 12

12. Line是:if ($query_result = mysql_result($query_run, 0, $field)) {

我的错误是什么?

5 个答案:

答案 0 :(得分:1)

$song_id = $_GET['song_id'];

function getsongdetails($field,$song_id) 
{
    $query = "SELECT `$field` FROM `songs` WHERE `id`='$song_id'";
    if ($query_run = mysql_query($query)) {
        if ($query_result = mysql_result($query_run, 0, $field)) {
            return $query_result;
        }
    }
}

OR

function getsongdetails($field) 
{
    global $song_id;
    $query = "SELECT `$field` FROM `songs` WHERE `id`='$song_id'";
    if ($query_run = mysql_query($query)) {
        if ($query_result = mysql_result($query_run, 0, $field)) {
            return $query_result;
        }
    }
}

确保使用PDO或MySQLi。不要使用上面的代码,因为它可以利用$ field和可以直接插入查询的$ song_id变量进行SQL注入。

我还建议您在调用mysql_result之前检查行数。行计数将告诉您返回了多少行。如果返回0行,则无需进行进一步的mysql调用。

答案 1 :(得分:0)

像这样使用它,然后你就会知道错误

global $song_id;
$query = "SELECT `$field` FROM `songs` WHERE `id`='$song_id'";
$query_run = mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($result);
    if ($num>0) {
        if ($query_result = mysql_result($query_run, 0, $field)) {
            return $query_result;
        }
    }

答案 2 :(得分:0)

$song_id = $_GET['song_id'];

function getsongdetails($field, $song) 
{
    $query = "SELECT `$field` FROM `songs` WHERE `id`='$song'";
    if ($query_run = mysql_query($query)) {
        if ($query_result = mysql_result($query_run, 0, $field)) {
            return $query_result;
        }
    }
}

不知道其他变量是什么,但我认为' title'还是什么?

$result = getsongdetails('title', $song_id);

然后在循环中回显或print_r你的结果集,或者你想要它 出现

答案 3 :(得分:0)

function getsongdetails($field) {
   global $song_id;
    $query_run = mysql_query("SELECT `$field` FROM `songs` WHERE `id`='$song_id'");
     if (!$query_run) {
           //  the query not succes, handle error. ex: return mysql_error();
      } else {
            if (mysql_num_rows($query_run) > 0) {
              $query_result = mysql_result($query_run, 0, 0);
          return $query_result;
         }
      }
 }

答案 4 :(得分:0)

修复您的代码:

<?php

function getsongdetails($field, $song_id) 
{

    $query = "SELECT `$field` FROM `songs` WHERE `id`='$song_id'";

    // query validation
    $query_run = mysql_query($query) or die(mysql_error());

    if( mysql_num_rows( $query_run ) ) {

      // use msyql_fetch_object instead mysql_result, it's better
      $song = mysql_fetch_object( $query_run );

      // use this if you pass just a 1 field name 
      // (fetch object return and object based in select fields)
      echo $song->$field;
    }
}

$song_id = $_GET['song_id'];
getsongdetails('name', $song_id);

结果是: