2016-07-22 7 views
-4

私は攻撃の保護を注入してDBに挿入しようとしています。私はw3schoolsのいくつかの例を見つけましたが、それは私にとっては役に立ちません。接続は正しいですし、動作します。私はSQLとプログラミングの新機能として、そのインサートの何が問題なのか分かりません。どうか誰でも助けてくれますか?どうもありがとう。挿入するためのDBにインジェクション攻撃防御を挿入する

マイPHP:データベースAPIの混合している

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "dbname"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "<p>Connected successfully</p>"; 

$From = $_GET['From']; 
$To = $_GET['To']; 
$Type = $_GET['Type']; 
$text = $_GET['text']; 


$stmt = $conn->prepare("INSERT INTO orders (from_lang, to_lang, tex) 
VALUES (:fr, :to, :tex)"); 

$stmt->bindParam(':fr', $From); 
$stmt->bindParam(':to', $To); 
$stmt->bindParam(':tex', $text); 
$stmt->execute(); 


?> 
+2

mysqliをPDOと混合する。 'bindParam'はpdoで使用され、bind_paramはmysqliで使用されます。 – Saty

+1

[PDOを使用する場合は、すべての道を行く](http://jayblanchard.net/demystifying_php_pdo.html) –

+0

私は使いたいmysqli。私は 'bindParam'を' bind_param'に変更しましたが、それでも動作しません。 –

答えて

3

。私は?に各パラメータのプレースホルダを変更して、代わりに各パラメータの個別の呼び出し(のbind_param()関数に変更されている

<?php 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "dbname"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "<p>Connected successfully</p>"; 

$From = $_GET['From']; 
$To = $_GET['To']; 
$Type = $_GET['Type']; 
$text = $_GET['text']; 


$stmt = $conn->prepare("INSERT INTO orders (from_lang, to_lang, tex) 
VALUES (?,?,?)"); 
$stmt->bind_param('sss', $From,$To,$text); 
$stmt->execute(); 


?> 

注意:あなたが使用したい場合はMySQLiをあなたのコードは次のようになります。)私はtype of variable to be insertedを指定して各プレースホルダーの変数を指定する単一の関数呼び出しを使用しました。

+0

ありがとうございました@JayBlanchard!今それは動作します!もう一度ありがとうございます –

+0

回答があなたの問題@NiniVaniniを解決した場合は、回答を受け入れることを検討してください。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workがここに戻って、ティック/チェックマークで緑色に変わるまで同じことを行う方法があります。これはコミュニティに通知し、解決策が見つかりました。そうでない場合、他の人は質問がまだ開いていると思うかもしれませんし、(もっと)回答を投稿したいかもしれません。 * Stackへようこそ!* –

+0

もちろん、助けとあなたのアプローチ@JayBlanchard –

関連する問題