2011-11-08 12 views
0

私は周りを見ていましたが、私が持っているこの問題に対する正解を見つけることができなかったようです。私はこのUPDATE MySQLのスクリプトを実行するたびに、それがエラーを呼び出します。ここではPHP MySQLのアップデートでエラーが発生しました

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Email='[email protected]', Phone='123456780', Address='16 Remote Street',' at line 1 

は、私はこのエラーを取得するために使用していたコードです。

<?php 
include ('cfg_prop.php'); 
$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$email = $_POST['email']; 
$secondemail = $_POST['secondary']; 
$phone = $_POST['phone']; 
$address = $_POST['address']; 
$country = $_POST['country']; 
$postcode = $_POST['postcode']; 
$company = $_POST['company']; 
$city = $_POST['city']; 

$sql = "UPDATE users SET Firstname='$firstname', Lastname='$lastname', Email='$email', Secondary Email='$secondemail', Phone='$phone', Address='$address', Country='$country', Postcode='$postcode', Company='$company', City='$city' WHERE Username='$userss'"; 
mysql_query($sql) or die(mysql_error()); 
?> 

誰も私を助けることができれば、私はちょうどこれを乗り越えることができないようとして本当に幸せと感謝されます。助けを前にありがとう。

  • アルターアーチ
+0

ありがとうございました。出来た。みんな本当にありがとう! –

+0

'どの回答が最も役立つかを決めたら、答えの左側にあるチェックボックスの概要をクリックして、それを受け入れられた回答としてください。" http://stackoverflow.com/faq#howtoask – hsz

+0

@hsz OK。私はそれを行います。 –

答えて

6

最初に - あなたはので、簡単SQL Injection攻撃のスーパーグローバル$_POSTからデータをエスケープする必要があります。

$email = mysql_real_escape_string($_POST['email']); 

次の事は、あなたは、エラーの原因空白があるのでSecondary Emailを使用canno。

colmunの名前をSecondary_Emailに変更する必要があります。

それとも、代わりに

`Secondary Email` 

を使用します(これをしない - の列は、名前に空白があってはなりません)。

+0

セキュリティチップをありがとう! –

1
Secondary Email 

列は、それの名前にスペースが含まれています。だから、

`

:あなたはバッククォート記号を使用する必要があり、すべての

$sql = "UPDATE users SET Firstname='$firstname', Lastname='$lastname', Email='$email', `Secondary Email`='$secondemail', Phone='$phone', Address='$address', Country='$country', Postcode='$postcode', Company='$company', City='$city' WHERE Username='$userss'"; 
+0

ありがとうございます。それが最速の返信だったので、私はあなたの投票に投票しています。出来た! –

1

これを試してください。空白が含まれているため

UPDATE users SET 
    Firstname='$firstname', 
    Lastname='$lastname', 
    Email='$email', 
    `Secondary Email`='$secondemail', 
    Phone='$phone', 
    Address='$address', 
    Country='$country', 
    Postcode='$postcode', 
    Company='$company', 
    City='$city' 
WHERE Username='$userss' 

Secondary Emailはバッククォートで囲む必要があります。
SQLインジェクションを避けるために、ユーザー入力をサニタイズすることを忘れないでください。

+0

ありがとう、ちょうどそれがコンパクトなので、私は1行にすべてを残したかった。 –

+0

@DarayusNanavati:あなたはそれを1行にまとめることができます。私のソリューションはもっと読みやすいですが、改行を取り除くことは可能です! – Marco

+0

ああ私は知っている。うまくレイアウトしてくれてありがとう:)! –

0
場を脱出

Secondary Email

$sql = "UPDATE users SET Firstname='$firstname', Lastname='$lastname', Email='$email', `Secondary Email`='$secondemail', Phone='$phone', Address='$address', Country='$country', Postcode='$postcode', Company='$company', City='$city' WHERE Username='$userss'"; 
+0

ありがとう、本当にありがとう。 –

0

はこの試してみてください。

$sql = "UPDATE `users` SET `Firstname`='$firstname', `Lastname`='$lastname', `Email`='$email', `Secondary Email`='$secondemail', `Phone`='$phone', `Address`='$address', `Country`='$country', `Postcode`='$postcode', `Company`='$company', `City`='$city' WHERE `Username`='$userss'"; 

をしかし、クエリを書いているこの方法は非常にSQLインジェクションによって推奨されます!

+0

SQLインジェクションビットで皮肉なことがあったのかどうかは完全にはわかりませんでしたが、今はmysql_real_escape_stringを探しています –

+0

良いです! mysql_real_escape_string()関数を使うと、ポストからデータを取り出すことができます。 – JellyBelly

+0

そうですね –

関連する問題