请查看下面提到的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']
但是每当我试图存储键值时,我都会收到错误,即:
解析错误: / opt / lampp / htdocs / UI中的语法错误,意外的''(T_ENCAPSED_AND_WHITESPACE),期待标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING) /user/joinmeeting.php 在 86
上
当我将$getit_part['data']
的值存储在另一个变量$key
中时,我得到了:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'key,contact_no,email'附近使用正确的语法VALUES('Rohitn',(第1行的SELECT id FROM demo_meeting WHERE'
我知道我正在做一些语法错误但无法调试它。
答案 0 :(得分:4)
key
是MySQL中的保留字。用反引号逃避它
`key`
并且您无法合并select
和values
。尝试
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'
答案 1 :(得分: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')";
参见PHP Array Documentation上的示例#4:
与在Perl中一样,您可以从双引号内的数组中访问值。但是,使用PHP,您需要将数组括在大括号之间。
答案 2 :(得分:0)
第一个错误:您只能将诸如$key
之类的简单变量放入SQL代码中。所有表达式(如数组引用($getit_part['data']
))都需要包含在{}
中,以便PHP进行评估,并将结果作为变量替换为SQL。
第二个错误:SQL语法不允许将子查询放入VALUES
语句的INSERT
子句中。请尝试使用INSERT ... SELECT ...
语法,例如:
INSERT INTO dest (col1, col2)
SELECT val1, (SELECT val2 FROM table2 WHERE ...)
请注意,没有FROM
子句。您不必添加它。它总是以这种方式选择单行。