私は自分のSQLデータを保護する経験は全くありません。私は準備されたステートメントを使用してWebサービスに対するインジェクション攻撃を防止しようとしています。私はいくつかのチュートリアルを続けましたが、私が実装したそれぞれが私のPHPスクリプトを殺しました。どのように私はこのクエリを保護することができますか?私はこのコードが動作しない理由は本当にわからないんだけどMySQL作成済みステートメントの作成
$value = (integer)$_GET["name"];
$sql = $dbConnection->prepare('SELECT `coordinates`, `center` , `content_string` FROM Regions WHERE `id` = ?');
$sql->bind_param('i', $value);
$sql->execute();
$result = $sql->get_result();
$rows = array();
if ($result->num_rows > 0) {
// output data of each row
while($r = mysqli_fetch_assoc($result)) {
$rows[] = $r;
}
}
:
$value = (integer)$_GET["name"];
$sql = "SELECT `coordinates`, `center` , `content_string` FROM Regions WHERE `id` = {$value}";
$result = $conn->query($sql);
$rows = array();
if ($result->num_rows > 0) {
// output data of each row
while($r = mysqli_fetch_assoc($result)) {
$rows[] = $r;
}
}
は、ここに私の試みです。 MySQLiを
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (?, ?)");
$stmt->bind_param("ss", $username, $email);
// set parameters and execute
$username= "John";
$email = "[email protected]";
$stmt->execute();
$username= "Mary";
$email = "[email protected]";
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
PHPのヒントやトリックと
これまでのプリペアドステートメントを実行する時、あなたの最高の試みを示したので、我々はそれがあなたのPHPスクリプト – BeetleJuice
は、いくつかのアドバイスのために、このページをチェックしてください殺す理由を把握することができますしてください。http://php.net/manual/ ja/mysqli.prepare.php。何か問題があれば、あなたの質問を更新するエラーを投稿してください。 –
手続き型とオブジェクト指向のスタイルのmysqli呼び出しを混在させるのはなぜですか? –