簡體   English   中英

使用數組中的PHP變量將其插入SQL數據庫。 (語法錯誤)

[英]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,您可以使用' , '作為分隔符來獲取數組中的所有項目。

您應該閱讀有關字符串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'] . ")"); 

正如其他人提到的那樣,您應該使用花括號或使用字符串連接. 運算符,將變量嵌入字符串中。

此外,假設title列是VARCHAR字段,而其他兩個是INT字段,則必須在title值兩邊加上引號:

$result = mysql_query("INSERT INTO movies (id, title, year) VALUES(" . $arr['title_id'] . ", '" . $arr['title'] . "', " . $arr['year'] . ")");

如果idyear字段也是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM