0

私はphpの初心者で、挿入クエリに問題があります

if(isset($id)){
$qry = "insert into user_to_birds(user_id,tax_id)values( 1 ,'.$id .') ";
 $result = mysql_query($qry);
        }

データベースに接続していますが、クエリが機能しませんでした。

なぜ機能しないのですか?どうすれば修正できますか?

4

6 に答える 6

1

この方法でクエリを作成しないでください。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 つの整数を表します。バインディングの最初の部分の後、どのタイプの変数をどの順序で使用するかを示した後、それらの変数の値をステートメントに追加できます。このメソッドを使用すると、値は自動的にエスケープされます。

于 2013-05-26T22:50:35.290 に答える
1

そこに挿入する方法については、ここに素敵な記事があります

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);
}

文字列の連結も見てください。
そのやり方で

于 2013-05-26T22:30:19.210 に答える
1
if(isset($id)){
$qry = "insert into user_to_birds(user_id, tax_id)values('1','$id') ";
 $result = mysql_query($qry);
        }

魔法のように働きます。

于 2013-05-26T22:25:54.893 に答える
1

一重引用符は二重引用符にする必要があると思います:

$qry = "insert into user_to_birds(user_id,tax_id )values( 1 ,".$id .") ";

PHP の文字列と SQL の文字列を混同しています (これは確かに簡単です)。

于 2013-05-26T22:26:08.407 に答える