0

アポストロフィを使用してデータを送信しようとすると問題が発生し、データベースに保存できません。

com0 は私のフォーム フィールドです。

$ucom0= mysqli_real_escape_string($_POST['com0']);

$AddQuery = "INSERT INTO database(feed1,comp1) VALUES ('".$ucom0."','".$uincrease0."')"; 

ここにエラーがあります:

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

1 に答える 1

3

アポストロフィを含むデータは、途中で SQL ステートメントを閉じます。これは悪いことであり、SQL インジェクションに対してオープンになる可能性があります。本当に準備済みステートメントを使用する必要があります。ただし、mysqli_real_escape_string使用できます。

しかし、これが機能しない理由はmysqli_real_escape_string、あなたのように手続き的に呼び出すときに 2 つのパラメーターが必要なためです (非推奨のmysql_real_escape_string());とは異なります)。

$ucom0= mysqli_real_escape_string($link, $_POST['com0']);

$linkデータベースに接続したときに返される変数はどこにありますか。

$link = mysqli_connect("databasehost", "username", "password", "database");

オブジェクトベースの mysqli を使用して接続している場合、これは異なります。

$mysqli = new mysqli("databasehost", "username", "password", "database");
$ucom0 = $mysqli->real_escape_string($_POST['com0']);
于 2012-10-05T15:34:27.620 に答える