0

別のテーブルから取得したデータを使用してテーブルにメッセージを挿入したいこの部分のphpコードに本当に苦労しています。これが私が持っているコードです:

$get_user_sql = "SELECT username FROM members WHERE id = '$member'";
$get_user_res = mysqli_query($con, $get_user_sql);
while($username = mysqli_fetch_assoc($get_user_res)){
    $user = $username["username"];
};

$get_message_sql = "SELECT message FROM posts WHERE id = '1377077348-5922'";
$get_message_res = mysqli_query($con, $get_message_sql);
while($postsmessage = mysqli_fetch_assoc($get_message_res)){
    $postmessage = $postsmessage["message"];
};

$type = "liked";
$title = "New Like";
$message = "<a href=\"profile.php?member=$user\">$user</a> just liked your post:<br /><i>$postmessage</i>";

$insert_note_sql = "INSERT INTO notes (id, sender, recipient, type, title, message, date) VALUES('$id', '$member', '$recipient', '$type', '$title', '$message', '$time')";
$insert_note_res = mysqli_query($con, $insert_note_sql);

$postmessage を $message 行から削除するとすべて正常に動作することがわかりましたが、再度追加すると行が挿入されません。誰でもこの理由を見ることができますか?

4

1 に答える 1

-1

値をエスケープしていません。コンテンツの一部に引用符やその他のエスケープされていない文字が含まれている可能性があります。

使ってみてくださいmysqli_real_escape_string:

$postmessage = mysqli_real_escape_string($postsmessage);

データベースに挿入する前に、すべての値をエスケープする必要があります。詳細については、 SQL インジェクションを参照してください。あなたのコードには潜在的な脅威があります。

于 2013-08-21T12:59:52.523 に答える