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 が false の場合、PHP は B をチェックします。A が true の場合、B をチェックする必要はありません。

しかし、私は推測します

$c = A or B

実際には

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