2012-03-20 10 views
1

これは、ステップ3のテーブルにmysql_queryを使って挿入するのが正しいかどうかを知りたいと思います。また、それが正しい行に挿入されるようにするにはどうすればよいですか?私はWHEREステートメントを使用すると思います。私はこれを行うのです:....挿入が自動的にあなたのテーブルが正しく設定されていると仮定すると、新たなインクリメントIDで新しい行を作成しますこれはPHPを使用してmysqlテーブルに挿入する正しい方法ですか?

<?php 
if (isset($_POST)){ 
//1. Define form variables 
$language = $_POST['language']; 
$level = $_POST['level']; 
$language_learn = $_POST['language_learn']; 
$learn_level = $_POST['learn_level']; 
$preferred_contact = $_POST['preferred_contact']; 
$city = $_POST['city']; 
$age = $_POST['age']; 
$sex = $_POST['sex']; 
$description = $_POST['description']; 

//2. Check if form variables are valid 

//3. Insert into table 
$insert = mysql_query(" 
    INSERT INTO user (language, level, language learn, learn_level, preferred_contact, city, age, sex, description) 

    VALUES ('".$language."', '".$level."', '"$language_learn."', '".$learn_level."', '".$preferred_contact."', '".$city."', '".$age."', '".$sex."', ".$description."')"); 

//4. Reload page at home page 

}//end $_POST 
?> 

答えて

2

値INSERT ...。 INSERT文にはWHEREはなく、更新文でのみ存在します。また、セキュリティのためにすべてのPOSTをmysql_real_escape_string()で囲む必要があります。

+2

+1はmysql_real_escape_string()に言及しています。 –

+0

私はむしろパラメータ化されたクエリを使用することを提案したいと思う:http://stackoverflow.com/questions/732561/why-is-using-a-mysql-prepared-statement-more-secure-than-using-the-common-escape – Mike

+0

@Mikeそうだが、現時点では単純なままにしたい – yehuda

0

正しく表示されます。 そして、/ etc/....を選択/更新/削除するためにはどこが使われていますが、挿入には使われません。

0

そして、あなたは、各変数

$insert = mysql_query(" 
         INSERT INTO user 
         (language, level, language learn, learn_level, preferred_contact, city, age, sex, description) 
          VALUES 
         ('$language', '$level', '$language_learn', '$learn_level', '$preferred_contact', '$city', '$age', '$sex','$description.') 
        "); 
0
あなたがにmysql_insert_id()を使用して挿入を確実に行うことができます

ため".を与えることなく、それを直接使用することができ、

例:するmysql_query(INSERTクエリ)の後あなたはこのように使うことができます。

if(mysql_insert_id >0) 
{ 
echo "Data inserted successfully"; 
} 
0

まず、テーブルにプライマリキーがあることを確認する必要があります。テーブル定義には、おそらくそのテーブルの主キーであるuser_idという列があります。

次に、その列をauto incrementと設定する必要があります。新しいレコードをテーブルに追加するたびに、user_idの値が自動的に追加されます。あなたは主キーを持っていますが、insert文を発行するたびに、あなたは常にその値を挿入する必要があり、自動インクリメントに設定しなかった場合は

CREATE TABLE 'user' 
(
'user_id' int(11) NOT NULL AUTO_INCREMENT, 
     ......... 
     other columns 
     ......... 
PRIMARY KEY ('user_id') 
) ENGINE=INNODB; 

NULLはプライマリキーに許可されていない値なので、基本的にこれは失敗します。あなたは、パラメータ化クエリを使用する必要があります:あなたのクエリは罰金:)

注意を動作するはずですそれ以外

$insert = mysql_query(" 
INSERT INTO user (language, level, language learn, learn_level, preferred_contact, city, age, sex, description) 

VALUES ('{$language}', '{$level}', '{$language_learn}', '{$learn_level}', '{$preferred_contact}', '{$city}', '{$age}', '{$sex}', {$description}')"); 

関連する問題