2012-02-15 12 views
-1

私はeshop_dbの顧客テーブルに挿入しようとしています 私はそれを実行すると、エラーはありませんが、mysqlには格納されませんでした。 私のコードで何が問題になっていますか? 私は本当に理解していません。 答えをください。ありがとう。PHPが動作しませんINSERT INTOメソッド

--registerForm.php--

<form action="register.php" method="post"> 
    <p>User ID: <input type="text" name="userId" size="30"/>*</p> 
    <p>Password: <input type="password" name="password" size="30"/>* </p> 
    <p>Retype Password: <input type="password" name="repassword" size="30"/>*</p> 
    <p>First Name: <input type="text" name="firstName" size="30"/>*</p> 
    <p>Last Name: <input type="text" name="lastName" size="30"/>*</p> 
    <p>Your Address (*):</p> 
    <p><textarea name="address" rows="5" cols="30"></textarea></p> 
    <p>Phone: <input type="text" name="phone" size="20"/>*</p> 
    <p>E-mail: <input type="text" name="email" size="21"/>*</p> 
    <p><input type="submit" value="Create Account"/></p> 
</form> 

--register.php--

<?php 
require "sql_connection.php"; 
if(isset($_POST['submit'])) 
{ 
    if($_POST["password"]==$_POST["repassword"]) 
    { 
     mysql_query("insert into customer (userId, password, firstName, lastName, address, phone, email) 
     values ('$_POST[userId]','$_POST[password]','$_POST[firstName]','$_POST[lastName]','$_POST[addres]]','$_POST[phone]','$_POST[email]')") 
     or die(mysql_error()); 
    } 
} 
?> 

--sql_connection.php--

<?php 
$db_host = "localhost"; 
$db_username = "root"; 
$db_pass = "mypass"; 
$db_name = "eshop_db"; 

@mysql_connect("$db_host", "$db_username", "$db_pass", "$db_name") or die("connection is fail."); 
@mysql_select_db("$db_name") or die("database does not exsist."); 
echo "Successfully connected!!"; 
?> 
+3

[SQLインジェクション](http://il.php.net/manual/en/security.database.sql-injection.php) –

+0

$ _POST変数で受け取った値をデータベースに挿入しないでください!決して! –

+0

あなたはそれが入ったときに何かを印刷して最初の 'if'条件に入るかどうか確認できますか? –

答えて

2

これを試してみてください。

<?php 

require "sql_connection.php"; 

if(isset($_POST['submit']) && $_POST["password"] == $_POST["repassword"]) { 

    mysql_query(
'INSERT INTO `customer` (`userId`, `password`, `firstName`, `lastName`, `address`, `phone`, `email`) 
    VALUES ('.$_POST['userId'].', '.$_POST['password'].', '.$_POST['firstName'].', '.$_POST['lastName'].', '.$_POST['address'].', '.$_POST['phone'].', '.$_POST['email'].')' 
) or die(mysql_error()); 

} 

最後に、受信データをフィルターして検証します。正しい

2

誤植、ここではこの部分:

'$_POST[addres]]' // wrong 
'$_POST[address]' // right 
+0

'...'。$ _ POST ['address'] .'... ' - インデックスを引用する –

+0

なぜdownvote?彼は「アドレス」の代わりに「アドレス」を持っていました。 – djot

+0

スタイルの問題と脆弱性を除いて、これはクエリが失敗する理由と思われます。 – Feysal

0

まあ、直接POST配列内の値を使用するには明らかに悪いアイデアのほかに、あなたのインデックスが引用符で囲む必要があります。したがって、$ _POST ['address']など。また、文字列の注入をしようとすると、配列の値を中括弧でエスケープする必要があります。

関連する問題