2012-08-09 127 views
0

請做看看下文提到的SQL:SQL錯誤:語法錯誤,意外'(T_ENCAPSED_AND_WHITESPACE)

$sql ="INSERT INTO 
    demo_participant 
    (name, meeting_id_id, password, user_view__url, key, contact_no, email) 
    VALUES 
    ('$part_name', (SELECT id FROM demo_meeting WHERE meetingID = '$mtngid'), 
    '$attendee_password', '$join_url', $getit_part['data'], '$pr_mobile', 
    '$pr_email')"; 

我的問題是,上述說法沒有鍵及其關聯值$getit_part['data']

工作正常

但每當我試圖儲存我得到的錯誤,即鍵值:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /opt/lampp/htdocs/UI/user/joinmeeting.php on line 86

,當我存儲$getit_part['data']的價值諾特爾變量像$key然後我得到:

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 'key,contact_no,email) VALUES('Rohitn',(SELECT id FROM demo_meeting WHERE ' at line 1

我知道我做了一些語法錯誤,但無法對其進行調試。

+0

你可以簡單地echo $ sql並顯示它嗎? – 2012-08-09 06:58:07

+0

我只顯示回聲 – user1481793 2012-08-09 07:08:04

回答

4

key是MySQL中的保留字。用反引號

`key` 

逃避它,你不能合併selectvalues。嘗試

INSERT INTO demo_participant(name, 
          meeting_id_id, 
          password, 
          user_view__url, 
          `key`, 
          contact_no, 
          email) 
SELECT '$part_name', 
     id, 
     '$attendee_password', 
     '$join_url', 
     '$getit_part['data']', 
     '$pr_mobile', 
     '$pr_email' 
FROM demo_meeting 
WHERE meetingID = '$mtngid' 
+0


解析錯誤:語法錯誤,意想不到的 ''(T_ENCAPSED_AND_WHITESPACE),在期待標識符(T_STRING)或可變(T_VARIABLE)或數字(T_NUM_STRING)/opt/lampp/htdocs/UI/user/joinmeeting.php在線
user1481793 2012-08-09 07:04:42

+0

在'{}'中包含'$ getit_part ['data']',就像Tomak的回答一樣。 – 2012-08-09 07:09:35

+0

耶現在感謝juergen d和JYelton – user1481793 2012-08-09 07:11:41

0

封裝你陣列花括號:

$sql ="INSERT INTO 
    demo_participant 
    (name, meeting_id_id, password, user_view__url, key, contact_no, email) 
    VALUES 
    ('$part_name', (SELECT id FROM demo_meeting WHERE meetingID = '$mtngid'), 
    '$attendee_password', '$join_url', {$getit_part['data']}, '$pr_mobile', 
    '$pr_email')"; 

參見實施例#4上PHP Array Documentation

As in Perl, you can access a value from the array inside double quotes. However, with PHP you'll need to enclose your array between curly braces.

+0

我會在這裏留下這個答案,但@juergen是正確的;嵌入式'SELECT'需要按照他的例子重寫。 – JYelton 2012-08-09 07:05:20

0

第一個錯誤:您只能將簡單變量如$key放入SQL代碼中。所有表達式,如數組引用($getit_part['data'])需要包含在{}中,以便PHP評估結果並將其作爲變量替換爲SQL。

第二個錯誤:SQL語法不允許將子查詢放入INSERT語句的VALUES子句中。嘗試使用INSERT ... SELECT ...語法代替,例如:

INSERT INTO dest (col1, col2) 
SELECT val1, (SELECT val2 FROM table2 WHERE ...) 

請注意,有沒有FROM條款。您不必添加它。它總是以這種方式選擇單行。