从';消息';表,没有错误,但它不是';t工作.MYSQL,PHP


SELECT data from a 'messages' table, no error but it isn't working. MYSQL, PHP

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

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变量输入了浏览器。错误在哪里?或者,如果有更好的方法,我会很高兴听到。

非常感谢。

$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);

编辑:

只是不要使用或类似于此,或者至少不要使用或的返回值类似于那样。

正常情况下,

A or B

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

但我想

$c = A or B

实际上是

($c = A) or B