2016-05-01 11 views
1

データベースにデータを挿入できません。これは私のSQLインジェクションを初めて扱うときです。SQLインジェクションの挿入を防止する

$stmt = $dbConnection->prepare('INSERT INTO users(name) VALUES('name = ?')'); 
$stmt->bind_param('s', $name); 

$stmt->execute(); 

しかし、これは機能しません。どんな助けでも謝罪されるでしょう!

答えて

3

コードに構文エラーがあります。これを試してみてください:

$stmt = $dbConnection->prepare('INSERT INTO users (name) VALUES (:s)'); 
$stmt->bindParam(':s', $name); 
$stmt->execute(); 

を使用すると、挿入し、複数の値を定義したい場合は、このようにそれを実行します。

$stmt = $dbConnection->prepare('INSERT INTO users (name, email) VALUES (:s, :email)'); 
$stmt->bindParam(':s', $name); 
$stmt->bindParam(':email', $email); 
$stmt->execute(); 

あなたがmysqliを使用している場合は、あなたのコードは次のようになります。

$stmt = $dbConnection->prepare('INSERT INTO users (name) VALUES (?)'); 
$stmt->bind_param('s', $name); 
$stmt->execute(); 
+0

これは機能します。しかし、私がもっと追加したいなら、私はするべきですか(:s、:s、:s)? –

+0

@ J.Doeいいえ、私の投稿に例を追加します:) –

+0

ああ、それはそうです!どうもありがとうございました! –

2

SQLにname =は必要ありません。列名はテーブル名の後にリスト(name)で指定されています。通常は値を入力する場所に?を入れてください。

$stmt = $dbConnection->prepare('INSERT INTO users(name) VALUES(?)'); 
$stmt->bind_param('s', $name); 
$stmt->execute(); 
関連する問題