[英]Using PHP variables from an array to insert into SQL database. (Syntax error)
解析错误:语法错误,意外的T_ENCAPSED_AND_WHITESPACE,预期为T_STRING或T_VARIABLE或T_NUM_STRING
这是引发错误的行。
$result = mysql_query("INSERT INTO movies (id, title, year) VALUES($arr['title_id'], $arr['title'], $arr['year'])");
您必须将变量用大括号括起来:
$result = mysql_query("INSERT INTO movies (id, title, year) VALUES({$arr['title_id']}, {$arr['title']}, {$arr['year']})");
在这里看看我complex (curly) braces
解释: php变量转义问题
对我有用的代码如下:
$result = mysql_query("
INSERT INTO movies (id, title, year)
VALUES(" . implode($arr,', ').";
使用implode,您可以使用' ,
'作为分隔符来获取数组中的所有项目。
$result = mysql_query("INSERT INTO movies (id, title, year) VALUES($arr['title_id'], $arr['title'], $arr['year'])");
我会这样:
$result = mysql_query("INSERT INTO movies (id, title, year) VALUES(" . $arr['title_id']. ", " . $arr['title'] . ", " . $arr['year'] . ")");
正如其他人提到的那样,您应该使用花括号或使用字符串连接.
运算符,将变量嵌入字符串中。
此外,假设title
列是VARCHAR
字段,而其他两个是INT
字段,则必须在title
值两边加上引号:
$result = mysql_query("INSERT INTO movies (id, title, year) VALUES(" . $arr['title_id'] . ", '" . $arr['title'] . "', " . $arr['year'] . ")");
如果id
和year
字段也是VARCHAR
字段,则必须执行相同的操作。
这是一个字符串解析问题。 请参阅有关变量解析的PHP文档 。 问题是使用简单语法(不带花括号)时,索引写时不带引号。
您可以在变量周围使用花括号:
$result = mysql_query("INSERT INTO movies (id, title, year) VALUES({$arr['title_id']}, {$arr['title']}, {$arr['year']})");
或者,您可以将字符串和变量与点连接在一起,从而避免完全解析字符串:
$result = mysql_query('INSERT INTO movies (id, title, year) VALUES('.$arr['title_id'].', '.$arr['title'].', '.$arr['year'].')');
或者省略引号,但这看起来不太干净:
$result = mysql_query("INSERT INTO movies (id, title, year) VALUES($arr[title_id], $arr[title], $arr[year])");
这不是一个直接的答案,但是我强烈建议您尽可能迁移到PHP数据对象 。 支持许多更高级别的mysql函数,例如准备好的语句(不再担心sql注入),将数据直接拉入对象等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.