Php SQL错误:语法错误,意外的“”(T_包装的_和_空白)

Php SQL错误:语法错误,意外的“”(T_包装的_和_空白),php,sql,database,Php,Sql,Database,请查看下面提到的SQL: $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

请查看下面提到的SQL:

$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',上述语句工作正常

但每当我试图存储键值时,就会出现错误,即:

分析错误:语法错误,意外的T_封装的_和_空格,第86行的/opt/lampp/htdocs/UI/user/joinmeeting.php中需要标识符T_字符串或变量T_变量或数字T_NUM_字符串

当我将$getit_part['data']的值存储在另一个变量(如$key)中时,我得到:

您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解可在第1行的“key,contact_no,email value'Rohitn',SELECT id FROM demo_meeting WHERE”附近使用的正确语法


我知道我正在执行一些语法错误,但无法调试它。

用大括号封装数组:

$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:

与Perl一样,您可以从双引号内的数组中访问值。但是,使用PHP时,需要将数组括在大括号中


用大括号封装数组:

$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:

与Perl一样,您可以从双引号内的数组中访问值。但是,使用PHP时,需要将数组括在大括号中

关键字是MySQL中的保留字。用回击来逃避它

`key`
而且不能将“选择”和“选择”值组合在一起。试一试

关键字是MySQL中的保留字。用回击来逃避它

`key`
而且不能将“选择”和“选择”值组合在一起。试一试


第一个错误:您只能将$key这样的简单变量放入SQL代码中。像数组引用$getit_part['data']这样的所有表达式都需要包含在{}中,以便PHP计算结果并将结果作为变量替换到SQL中

第二个错误:SQL语法不允许将子查询放入INSERT语句的VALUES子句中。尝试使用插入。。。选择而不是语法,例如:

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

请注意,没有FROM子句。你不必添加它。它总是以这种方式选择单行。

第一个错误:您只能将$key之类的简单变量放入SQL代码中。像数组引用$getit_part['data']这样的所有表达式都需要包含在{}中,以便PHP计算结果并将结果作为变量替换到SQL中

第二个错误:SQL语法不允许将子查询放入INSERT语句的VALUES子句中。尝试使用插入。。。选择而不是语法,例如:

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

请注意,没有FROM子句。你不必添加它。它总是以这种方式选择单行。

您能简单地回显$sql并显示它吗?您能简单地回显$sql并显示它吗?解析错误:语法错误,意外的T_封装的_和_空格,在/opt/lampp/htdocs/UI/user/joinmeeting.php第875行中需要标识符T_字符串或变量T_变量或数字T_NUM_字符串,在{}中包含$getit_部分['data'],就像在Tomak的答案中一样。是的,现在得到了它,感谢juergen d和JYelton解析错误:语法错误,意外的T_-ENCAPSED_和_空格,在第877行的/opt/lampp/htdocs/UI/user/joinmeeting.php中需要标识符T_字符串或变量T_-variable或数字T_-NUM_字符串,在{}中附上$getit_部分['data'],就像在Tomak的答案中一样。是的,现在得到了,谢谢juergen d和JYeltonI将这个答案留在这里,但@juergen是正确的;嵌入的SELECT需要像他的例子一样重写。我将在这里留下这个答案,但是@juergen是正确的;嵌入式SELECT需要重写,如他的示例所示。