[英]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.