0

投稿時にデータベーステーブルと一致させる必要があるユーザー名の配列があります。

投稿すると、次のエラーが表示されます。

警告: mysqli_fetch_row() は、パラメーター 1 が mysqli_result であることを予期します。ブール値は、/hermes/waloraweb008/b2049/information/folder/page.php の 43 行目 post_ok|213 で指定されます。

これにより、記号の後に配列が作成されます@(正常に動作します)。

$data = preg_replace('!((@)([-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+))!i', '<a href="user.php?u=$3">$1</a>', $data);
$mentions = preg_match_all('!((@)([-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+))!i', $data, $matches);
foreach ($matches as $findnames)
    {
        $shiz = implode(',',$findnames);
    }

これは、データベース内の配列を確認したいものです。

$mentionsql = "SELECT * FROM users WHERE username IN '$shiz'";
$mentionquery = mysqli_query($db_conx, $mentionsql);
$row83 = mysqli_fetch_row($mentionquery);
$musername = $row83["username"];

後でこれを行うことができるように:

mysqli_query($db_conx, "INSERT INTO notifications(username, initiator, app, which_status,did_read, date_time) 
                        VALUES('$musername','$log_username','<a href=user.php?u=$log_username>$log_username</a> mentioned you in a status.','$statusid',now(),now())");

エラーが発生する理由について何か考えはありますか?

4

1 に答える 1

1

あなたのコードを解釈できる限り$shiz、ユーザー名のコンマ区切りの文字列であるため、次のようになります。$shiz == 'user1, user2, user3'

この行で、クエリを生成しています:

$mentionsql = "SELECT * FROM users WHERE username IN '$shiz'";

私の例を挿入すると、$shiz次のようなクエリが得られます。

"SELECT * FROM users WHERE username IN 'user1, user2, user3'"

ただし、SQL コマンドの実際の構文にInは丸括弧が必要です。さらに、ユーザー名が文字列の場合は、単一引用符で囲む必要があります。したがって、クエリは次のようになります。

"SELECT * FROM users WHERE username IN ('user1', 'user2', 'user3')"
于 2013-06-23T03:10:53.367 に答える