我正在尝试拥有一组数据,我可以从我的表中提取出来:
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变量输入浏览器。 错误在哪里?或者,如果有更好的方法,我会很高兴听到。
非常感谢。
答案 0 :(得分: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);
编辑:
只是不要使用或喜欢这样,或者至少不要使用或那样的返回值。
通常,
A or B
如果A为假,则PHP将检查B;如果A为真,则无需检查B.
但我想
$c = A or B
实际上是
($c = A) or B