次のコードを入力すると、$city
をエスケープしてサニタイズする必要がありますか?準備されたPHP/MySQLクエリを使用する場合、入力をサニタイズする必要がありますか?
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($district);
/* fetch value */
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
/* close statement */
$stmt->close();
}
/* close connection */
$mysqli->close();
?>
準備クエリを使用するときに入力をサニタイズする必要がありますか?
木は木の道に入りました。 ;) –
はい、しかし準備された文は、アプリケーション層とデータ層の両方で多くのリソースを必要とすることがあります。 – Jmoney38
@ Jmoney38 Spot on、私はすべての解決策は、それが一般的な行為であると思われるので、ちょうどそれを選ぶのではなく、慎重に考えるべきだと思います。 – Sander