0

ユーザーがテキスト領域にテキストを入力するとデータベースのSQLテーブルを更新するSQL挿入スクリプトがありますが、ユーザーがテキストにアポストロフィを使用すると、テーブルに情報が挿入されません。これは、SQLがアポストロフィを終了ステートメントなどとして読み取るためです。しかし、ユーザーがアポストロフィを入れることができるステートメントを使用する方法はありますか?つまり、SQLに「%s%」またはアポストロフィを表すものを使用するように指示しますか?

これが私が使用しているsql更新コードです:

   <?php 

session_start();

include '_config/connection.php'; 

$status = $_POST['status'];

$result = mysql_query("SELECT status FROM ptb_profiles WHERE id=".$_SESSION['user_id']."");





if(!$result) 
{ 
echo "The username you entered does not exist"; 
} 
else 
if($status!= mysql_result($result, 0)) 
{ 
echo ""; 


    $sql=mysql_query("UPDATE ptb_profiles SET status ='$status' WHERE id=".$_SESSION['user_id'].""); 
}
    if($sql) 
    { 


}
header('Location: http://localhost/ptb1/profile.php?id=' . $_SESSION['user_id'] );
?>
4

3 に答える 3

2

アポストロフィから逃れることはできませんか?データをsmysql_real_escape_string()に押し込むときに使用するのが標準的な方法です。mysql_query()

于 2012-11-05T06:16:33.660 に答える
0

小さな変更とコード行の書き直し-

$sql=mysql_query('UPDATE ptb_profiles SET status ="'. mysql_real_escape_string($status) .'" WHERE id='.$_SESSION['user_id']);
于 2012-11-05T06:16:16.960 に答える
0

これを変える:

$sql=mysql_query("UPDATE ptb_profiles SET status ='$status' WHERE id=".$_SESSION['user_id']."");

これに:

$sql=mysql_query('UPDATE ptb_profiles SET status ="'. mysql_real_escape_string($status) .'" WHERE id='.$_SESSION['user_id']);

PS$_POSTまたは$_GETまたは$_REQUESTから直接SQLに変数を直接挿入しないでください。直接SQLインジェクションの脆弱性が発生します。

于 2012-11-05T06:18:52.917 に答える