从“消息”表中选择数据,没有错误,但不起作用。MYSQL,PHP

从“消息”表中选择数据,没有错误,但不起作用。MYSQL,PHP,php,mysql,Php,Mysql,我试图从表中提取一组数据,如下所示: echo $message_data['content']; $message_data = message_data($_GET['id'],'id' ,'content', 'sender', 'addressee','support','date'); function message_data($message_id) { $data = array(); $message_id = (int)$message_id; $func_n

我试图从表中提取一组数据,如下所示:

echo $message_data['content'];
     $message_data = message_data($_GET['id'],'id' ,'content', 'sender', 'addressee','support','date');
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;
} }
所以我声明$message_数据如下:

echo $message_data['content'];
     $message_data = message_data($_GET['id'],'id' ,'content', 'sender', 'addressee','support','date');
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;
} }
消息_data函数的编写方式如下:

echo $message_data['content'];
     $message_data = message_data($_GET['id'],'id' ,'content', 'sender', 'addressee','support','date');
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

您应该尝试将查询转储到页面,以便验证它是否按预期工作。您甚至可以在查询浏览器中运行该查询,以查看结果是否以这种方式出现。请不要在新代码中使用mysql_*函数。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,试试看。如果你想学的话,@mihaiorga,谢谢,我要读一下。Aaron,当我写的时候,查询工作:从id=1的消息中选择id、内容、发件人、收件人、支持、日期,这应该是函数中的查询。非常感谢,它工作了,但是你能告诉我为什么工作吗?不一样吗?