2

我正在尝试拥有一组数据,我可以像这样从表中提取这些数据:

echo $message_data['content'];

所以我这样声明 $message_data :

     $message_data = message_data($_GET['id'],'id' ,'content', 'sender', 'addressee','support','date');

message_data() 函数是这样写的:

function message_data($message_id) {
$data = array();
$message_id = (int)$message_id;

$func_num_args = func_num_args();
$func_get_args = func_get_args();

if($func_num_args > 1)
{
    unset($func_get_args[0]);

    $fields = '`'  .  implode('`, `' , $func_get_args) . '`';
    $data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `messages` WHERE `id` = $message_id") or die(mysql_error()));
    return $data;
} }

当我尝试提取有关用户的数据时,此功能的工作方式类似,我只是复制并粘贴它并稍微调整它。问题是,没有错误,是的,我确实使用 GET 变量输入了浏览器。错误在哪里?或者,如果有更好的方法来做到这一点,我会很高兴听到。

非常感谢。

4

1 回答 1

2
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM `messages` WHERE `id` = $message_id") or die(mysql_error()));

这一行是问题所在,括号内似乎 foo() 或 bar() 等于 foo() || bar(),这不是你想要的,所以把它放在一边:

$res = mysql_query("SELECT $fields FROM `messages` WHERE `id` = $message_id") or die(mysql_error());
$data = mysql_fetch_assoc($res);

编辑:

只是不要使用 or like this,或者至少不要使用 or like that 的返回值。

一般,

A or B

如果 A 为假,则 PHP 将检查 B;如果 A 为真,则无需检查 B。

但我猜

$c = A or B

实际上是

($c = A) or B
于 2012-08-24T06:42:47.800 回答