私はphpの初心者で、挿入クエリに問題があります
if(isset($id)){
$qry = "insert into user_to_birds(user_id,tax_id)values( 1 ,'.$id .') ";
$result = mysql_query($qry);
}
データベースに接続していますが、クエリが機能しませんでした。
なぜ機能しないのですか?どうすれば修正できますか?
この方法でクエリを作成しないでください。SQL インジェクションに対して非常に脆弱です。代わりに準備済みステートメントを使用してください。準備済みステートメントはプリコンパイルされているため、SQL インジェクションの対象にはなりません。
$id = 99;
$tax = 8;
$stmt = $mysqli->prepare("insert into user_to_birds(user_id,tax_id)values(?,?)"));
$stmt->bind_param("ii", $user, $tax);
$stmt->execute();
.. work on it ..
$stmt->close();
ii は 2 つの整数を表します。バインディングの最初の部分の後、どのタイプの変数をどの順序で使用するかを示した後、それらの変数の値をステートメントに追加できます。このメソッドを使用すると、値は自動的にエスケープされます。
そこに挿入する方法については、ここに素敵な記事があります
http://www.w3schools.com/php/php_mysql_insert.asp
INSERT INTO table_name (列 1、列 2、列 3、...) 値 (値 1、値 2、値 3、...)
//これが違いを生むかどうかわからない購入私は tax_id) と values( の間にスペースを入れてみます)
また、あなたのやり方が間違っているかどうかはわかりませんが、私はこのように書いたでしょう
if(isset($id))
{
$qry = "insert into user_to_birds (user_id, tax_id)
values( '1' ,'".$id ."') ";
$result = mysql_query($qry);
}
文字列の連結も見てください。
そのやり方で
if(isset($id)){
$qry = "insert into user_to_birds(user_id, tax_id)values('1','$id') ";
$result = mysql_query($qry);
}
魔法のように働きます。
一重引用符は二重引用符にする必要があると思います:
$qry = "insert into user_to_birds(user_id,tax_id )values( 1 ,".$id .") ";
PHP の文字列と SQL の文字列を混同しています (これは確かに簡単です)。