-1

データを自動的にphpに送信するajaxスクリプトがあるので、データをmysqlに保存できます。スクリプトは、何かを除いて正常に機能します。mysqlにデータを挿入できますが、データに(&)[and]文字が含まれている場合、[&]の後のデータではなく、[&]の前のデータが保存されます。
ここに例があります:私のデータは:---->'これは猫と犬です'。Mysqlは「これは猫です」を保存し、「&犬」を無視します。私のコードは次のとおりです。pdoやmysqliではありません。すぐに変更します!

<?php 
//connect to db
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
//select db
mysql_select_db("database", $con);

//get post variables from ajax
$link = $_POST['var1'];
$name = $_POST['var2'];
$size = $_POST['var2'];
$cat = $_POST['var4'];




//safe from sql injections
$link = mysql_real_escape_string($link);
$name = mysql_real_escape_string($name);
$size = mysql_real_escape_string($size);
$cat = mysql_real_escape_string($cat);




//verify url existance
if (!preg_match("(^https://example\.com(.*))", $link)) {
    //not valid url
    mysql_close($con);
    exit();
}

//check if result already exist
$check = mysql_query("SELECT link FROM links WHERE  link = '{$link}';");

if (mysql_num_rows($check) == 0) {
    // insert if not exist

    $sql="INSERT INTO links (link, name, size, category) VALUES ('$link','$name','$size','$cat')";
    if (!mysql_query($sql,$con))
      {
      die('Error: ' . mysql_error());
      }

    mysql_close($con);
}



?>
4

1 に答える 1

2

これはサーバー側の問題ではなく、クライアントでのリクエストの方法に問題があるように思われます。しかし、あなたは私たちにそれを見せませんでした。encodeURIComponentajaxリクエストの一部であるアンパサンドを含む文字列で使用する必要があります。そうし&ないと、は別のパラメータと見なされます。これは、PHP側で自動的にデコードされます。

于 2013-03-22T22:18:49.803 に答える