我想从我的数据库中获取数据。我正在尝试以下代码,但是我收到了错误。
代码:
$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)) {
我的错误是什么?
答案 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);
结果是: