-1

アポストロフィをフォームに追加してデータベースに保存しようとしていますが、アポストロフィを追加するとフォームが保存されません。

これは私のコードです:

           <?php

$abouttitle=$_POST[abouttitle];
$aboutcontent=$_POST[aboutcontent];
$aboutside=$_POST[aboutside];
$aboutsidetitle=$_POST[aboutsidetitle];  

  $con= mysql_connect("localhost","XXX","XXX");
  if (!$con) 
  {
   die('Could not connect: ' . mysql_error());
   }

   mysql_select_db("cl49-XXX", $con);
$result =   

$aboutcontent = mysql_real_escape_string($aboutcontent);
$abouttitle = mysql_real_escape_string($abouttitle);
$aboutside = mysql_real_escape_string($aboutside);
$aboutsidetitle = mysql_real_escape_string($aboutsidetitle); 

$query = "
UPDATE ADMIN
SET aboutcontent='$aboutcontent',
    abouttitle='$abouttitle',
    aboutside='$aboutside',
    aboutsidetitle='$aboutsidetitle'
");
$result = mysql_query($query);

フォームにアポストロフィを追加してDBに保存すると、以下のエラーが発生します

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
4

2 に答える 2

1

values次のような関数を使用して、php側からエスケープする必要があります

mysqli_real_escape_stringmysqli 拡張機能を使用している場合、または

mysql_real_escape_stringmysql拡張機能を使用している場合

于 2013-09-15T13:01:39.810 に答える
1

はい。mysql_real_escape_stringクエリを実行する前に使用します。

$aboutcontent = mysql_real_escape_string($aboutcontent);
$abouttitle = mysql_real_escape_string($abouttitle);
$aboutside = mysql_real_escape_string($aboutside);
$aboutsidetitle = mysql_real_escape_string($aboutsidetitle); 

変数をエスケープしたら、クエリを実行できます。

$query = "
UPDATE ADMIN
SET aboutcontent='$aboutcontent',
    abouttitle='$abouttitle',
    aboutside='$aboutside',
    aboutsidetitle='$aboutsidetitle'
";
$result = mysql_query($query);

補足: new code では関数を使用しないでくださいmysql_*。それらはもはや保守されておらず、公式に非推奨です。代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを使用するかを決めるのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2013-09-15T13:01:59.953 に答える