0

これは私を困惑させました。アポストロフィ (') を含むデータベースに何かを保存しようとすると、それまでは意味が保存され、その後は保存されません。例えば;

これを保存しようとしているとしましょう: Apple でのティム・クックの変更の詳細を報告します, 良くも悪くも »

保存します: レポートの詳細 ティム クック

データベースには問題なく保存されますが、「」の前のすべてのみが保存されます

私のコード:

if(isset($_POST['submit']))
{
global $db, $db_table_prefix;


$origRLTitle = $_POST['RLTitle'];
$origRLURL = $_POST['RLURL'];
$origRLUserID = $_POST['user-id'];

$RLTitle = mysql_real_escape_string($origRLTitle);
$RLURL = mysql_real_escape_string($origRLURL);
$RLUserID = mysql_real_escape_string($origRLUserID);    


if(strlen($RLTitle)>0 && strlen($RLURL)>0 && strlen($RLUserID)>0)
{
mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
mysql_select_db("sf") or die(mysql_error());
mysql_query("INSERT  INTO `ReadLater` (Title, URL, User_ID) VALUES ('".$RLTitle."', '".$RLURL."', '".$RLUserID."')");
echo "Saved";
}
}

適切に保存されない理由について何か助けはありますか? mysql_real_escape_string を試しましたが (正しく使用している場合)、うまくいかないようです。

補足: 上記のフォームを攻撃から保護する最善の方法は何ですか?

Update」についても同様に行っています。

4

2 に答える 2

1

データベースに接続したmysql_real_escape_string() に呼び出す必要があります。

if(isset($_POST['submit']))
{
    global $db, $db_table_prefix;


    $origRLTitle = $_POST['RLTitle'];
    $origRLURL = $_POST['RLURL'];
    $origRLUserID = $_POST['user-id'];
    mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());
    mysql_select_db("sf") or die(mysql_error());

    $RLTitle = mysql_real_escape_string($origRLTitle);
    $RLURL = mysql_real_escape_string($origRLURL);
    $RLUserID = mysql_real_escape_string($origRLUserID);    


    if(strlen($RLTitle)>0 && strlen($RLURL)>0 && strlen($RLUserID)>0)
    {
        mysql_query("INSERT  INTO `ReadLater` (Title, URL, User_ID) VALUES ('".$RLTitle."', '".$RLURL."', '".$RLUserID."')");
        echo "Saved";
    }
}
于 2012-05-25T15:49:59.137 に答える
0

変化する

mysql_query("INSERT  INTO `ReadLater` (Title, URL, User_ID) VALUES ('".$RLTitle."', '".$RLURL."', '".$RLUserID."')");

$query = "INSERT  INTO `ReadLater` (Title, URL, User_ID) VALUES ('".$RLTitle."', '".$RLURL."', '".$RLUserID."')";
echo $query;
mysql_query($query);

そして、送信している実際のクエリを確認してください。問題を簡単に見つけることができます:)

于 2012-05-25T16:24:53.163 に答える