1

私には奇妙に聞こえます。MYSQL テーブルにデータを挿入する単純な PHP スクリプトがあります。AJAX 経由でクライアントからコンテンツを受信すると、データは変数に格納されます。

$content=$_POST['content']; 
$sql="insert into contents values('$content')";
mysql_query($sql);

問題は、コンテンツに「&」記号が含まれている場合、& の前の部分文字列が MYSQL に格納され、残りの文字列が破棄されることです。MYSQL で直接試してみると、& 記号を含む完全な文字列が格納されます。なぜですか?

4

2 に答える 2

0

問題は、mysql が「&」を AND として認識することです。これをチェックしてください:

$content = mysql_real_escape_string($_POST['content']); 
$sql = "insert into contents (column) values('$content')";
mysql_query($sql);
于 2013-11-03T13:38:54.583 に答える
-1

まず、このサイトが公開されている場合は削除してください (笑)。これは、従来の SQL インジェクションの脆弱性です。

mysqlimysql の代わりに今すぐ使用する必要があります。

これを使用する方法は同じですが、 「リアルエスケープ文字列」と呼ばれるこの非常にクールな機能があります

データベースにデータを渡す前に、データをパラメータ化します。

$content = $_POST['content']; 
$connection = new mysqli('ipaddress','username','password','database');
$content = $connection->real_escape_string($content);
$sql="insert into contents values('$content')";
$connection->query($sql);

これは、データを渡すより安全な方法です。

于 2013-11-03T13:39:15.883 に答える