2012-08-01 112 views
0

我使用下面的INSERT命令在我的數據庫表稱爲demo_organizationMySQL數據庫不插入值

$sql = "INSERT INTO demo_organization (org_name, abn_acn_no, org_url,city, 
        state, country, pin, street, primary_mobile, 
        secondary_mobile, primary_landline, 
        secondary_landline, primary_email, secondary_email) 

      VALUES ($org_name, $abn_acn_no, $org_url, $city, $state, $country, 
        $pin, $street, $primary_mobile, $secondary_mobile, 
        $primary_landline, $secondary_landline, $primary_email, 
        $secondary_email)"; 

$result = mysql_query($sql) or die (mysql_error()); 

在PHP 插入值,但我收到錯誤,如

你有一個錯誤你的SQL語法;第012行: 大道,+ 6190567890,+ 89685552'在第2行附近'://loc.com,Melburn,Melburn,Australia,56007,123園區 '對應於您的MySQL服務器版本的正確語法使用

我完全新的PHP MySQL的請告訴我,我做錯了

回答

2

你缺少周圍的文本值單引號:

insert into demo (org_name, abn_acn_no) values ('$org_name', abn_acn_no); 
// assumes that abn_acn_no is numeric. 

您也可以將空的變量不傳遞到查詢。如果您沒有它,則需要將其作爲, null,插入,而不是作爲無值的變量 - 這會導致SQL不會接受的, , - 即使該列接受空值。

+0

@MBJ不在SQL查詢中,它不會。如果在查詢中有'3,$ yourVar,3'(和'$ yourvar ='testing'',那麼查詢將看起來像'3,testing,3',由於字符串沒有被封裝,所以它不會被mysql接受引號內。 – Fluffeh 2012-08-01 12:46:57

+0

$ SQL =「INSERT INTO demo_organization(ORG_NAME,org_url,abn_acn_no,城市,州,國家,腳,街道,primary_mobile,secondary_mobile,primary_landline,secondary_landline,PRIMARY_EMAIL,SECONDARY_EMAIL) \t \t VALUES( '$ ORG_NAME', '$ org_url', '$ abn_acn_no', '$城市', '$狀態', '$國家', '$針', '$街', '$ primary_mobile', '$ secondary_mobile', '$ primary_landline', '$ secondary_landline','$ primary_email','$ secondary_email')「; 我也試過這個,但得到相同的錯誤 – user1481793 2012-08-01 12:50:32

+0

@ user1481793你可能有一個空字段,你可以用'echo $ sql;'傳遞給'mysql_query'函數,這會告訴你你是什麼 失蹤。如果你缺少字段,你需要在它們的位置插入一個'null'。 – Fluffeh 2012-08-01 12:53:20

1

如果要使用MySQL,你需要躲避值mysql_escape_string($string)

沒有與查詢所提供的網址問題,請嘗試逃脫,並再次運行。

否則,MySQL是變得貶值,使用的mysqli或PDO

http://php.net/manual/en/book.mysqli.php

http://php.net/manual/en/book.pdo.php

+0

這應該是正確的答案。 – tadman 2012-08-01 14:57:52

+0

謝謝:)它似乎是投票的答案,沒有得到積極的反饋無論如何 – mlishn 2012-08-01 15:05:51

+0

我只是試圖回答MySQL的問題和PHP世界似乎*完全無視*如何正確逃脫SQL。我只是盡我的本分來推動這種魯莽的行爲,很高興看到你也是。 – tadman 2012-08-01 15:31:20

0

你的代碼是vulverable與SQL注入。我會推薦MYSQLiPDO。但無論如何,你的價值觀是string format should be wrap with single quotes

$sql = "INSERT INTO demo_organization (org_name, abn_acn_no, org_url,city, 
       state, country, pin, street, primary_mobile, 
       secondary_mobile, primary_landline, 
       secondary_landline, primary_email, secondary_email) 
     VALUES ('$org_name', 'abn_acn_no, '$org_url', '$city', ..., 
       '$secondary_email')"; 
+0

你推薦'mysqli'和PDO是正確的,但是由於這個答案對於SQL注入來說是非常脆弱的,所以這是不正確的。你應該像你所建議的那樣使用佔位符。 – tadman 2012-08-01 14:57:31