2012-08-09 125 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条款。您不必添加它。它总是以这种方式选择单行。