我正在尝试一个数据数组,我可以像这样从表中提取:
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