iT邦幫忙

0

php新增資料表發生錯誤,使用的資料庫系統是MySQL, 經測試後判斷應該是變數語法有錯,能幫我看一下變數哪裡不對嗎?

以下是我程式碼錯誤的部分,麻煩前輩們幫我看看,感謝QAQ

$query = "INSERT INTO memdata (
id ,
level ,
name ,
comhead ,
comnum ,
peopleid ,
cell ,
phone ,
birth ,
recommend ,
email ,
address ,
pay ,
time ,
other ,
mname
) VALUES ( "NULL ,.$\_POST[1].,.$\_POST[2]., .$\_POST[3].,.$\_POST[4]., .$\_POST[5]., .$\_POST[6]., .$\_POST[7]., .$\_POST[8]., .$\_POST[9]., .$\_POST[10]., .$\_POST[11]., .$\_POST[12]., .$\_POST[13]., .$\_POST[14]., .$\_POST[15].");";

2 個回答

6
fillano
iT邦超人 1 級 ‧ 2013-11-15 14:09:03
最佳解答
  1. "NULL 改成 NULL
  2. .$\_POST[1]. 改成 '".$_POST[1]."' ,依此類推
  3. 結尾的 ");"; 改成 );";

不過你這樣寫sql查詢,百分之百會發生sql injection。至少:每個post變數要經過mysql_real_escape_string()處理過,再拿來組sql語句。

感謝前輩的解答,對於變數的句法有更清楚一些了,
我不清楚這樣的語法原來會有sql injection的漏洞,
謝謝前輩的提醒,不過我沒接觸過mysql_real_escape_string(),
我研究一下,希望我的程度能夠理解,謝謝^____^

費公出馬筆記

4
afgn
iT邦新手 5 級 ‧ 2013-11-26 18:09:01

醬子就搞定了 ^_^

$query = "INSERT INTO memdata (id,level,name,comhead,comnum,peopleid,cell,phone,birth,recommend,email,address,pay,time,other,mname) VALUES (NULL,'$_POST[1]
','$_POST[2]','$_POST[3]','$_POST[4]','$_POST[5]','$_POST[6]','$_POST[7]','$_POST[8]','$_POST[9]','$_POST[10]','$_POST[11]','$_POST[12]','$_POST[13]','$_POST[14]','$_POST[15]')";

前面的欄位不須加正反引號,後面的值也只需加單引號而不用連接字元(.)

非常感謝您的回答,這個方式我有測試過了,但結果依然錯誤,不過仍感謝您告知 ^_^

我要發表回答

立即登入回答