2012-07-19 82 views
-2

我今天在我的網站的公開個人資料上工作過,但我遇到了問題。SQL語法錯誤[PHP | MYSQL]

我輸入的所有信息,但是當我按下提交,我得到:

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法附近使用手動「WHERE ID = 1」在行3

代碼:

// contact to database 

/// connection is OK 

//Get data in local variable 
$v_name=$_POST['name']; 
$v_age=$_POST['age']; 
$v_job=$_POST['job']; 
$v_interes=$_POST['interes']; 
$v_hobbies=$_POST['hobbies']; 
$v_family=$_POST['family']; 
$v_pub_mail=$_POST['pub_mail']; 
$v_profimg=$_POST['profimg']; 
$v_about=$_POST['about']; 

// check for null values 
if ($v_name=="" /*or $v_msg==""*/) 
echo "All fields must be entered, hit back button and re-enter information"; 
else{ 
$query="insert into user(name,pub_mail,age,job,interes,hobbies,family,about) values ('$v_name','$v_age','$v_job','$v_interes','$v_hobbies','$v_family','$v_pub_mail','$v_profimg','$v_about') WHERE id='$usrid'"; 
mysql_query($query) or die(mysql_error()); 
echo "Your profile was updated ."; 
} 
+1

談論注射風險。嘗試在插入它們之前擦洗輸入..或者更好,使用PDO準備好的語句。 – Daedalus 2012-07-19 21:07:32

+1

在附註上,您將九個值插入八列。你可能想檢查一下。 – Palladium 2012-07-19 21:09:20

+1

而其中一個領域是失靈的。 – 2012-07-19 21:09:59

回答

5

INSERT沒有WHERE子句。如果您需要更新現有記錄,則應該使用UPDATE

+0

或REPLACE INTO – mdo 2012-07-19 21:09:17

+0

類似於$ query =「更新用戶(....)WHERE id ='$ usrid'? – 2012-07-19 21:10:06

+0

http://dev.mysql.com/doc/refman/5.1/en/update.html – 2012-07-19 21:17:28

0

,你不應該使用WHERE條款與INSERT

$query="insert into user(name,pub_mail,age,job,interes,hobbies,family,about) values ('$v_name','$v_age','$v_job','$v_interes','$v_hobbies','$v_family','$v_pub_mail','$v_profimg','$v_about'); 

我想你想的UPDATE而不是INSERT ...

(你插入/更新不被保護的方式,不要忘記使用addslashes

+0

如果我不使用where,那他如何將數據插入到我想要的配置文件中? – 2012-07-19 21:08:31

+0

@GerculyRobert與'UPDATE' – Daedalus 2012-07-19 21:08:57

+0

@GerculyRobert有沒有這樣的事情插入數據「你想要的配置文件」。你想到的是通過''INSERT''把''usrid''作爲'INSERT'語句的一部分到'id'中來實現的。 – Palladium 2012-07-19 21:11:05