我发现了问题,现在我的插入查询有效,但我不明白为什么。这是我当前的工作查询:
$add_movie = mysql_query("INSERT INTO ownedmovies VALUES ('', '{$movie_data['Title']}',
'{$movie_data['Year']}', '{$movie_data['Rated']}', '{$movie_data['Runtime']}',
'{$movie_data['Genre']}', '{$movie_data['Director']}', '{$movie_data['Writer']}',
'{$movie_data['Actors']}', \"{$movie_data['Plot']}\", '{$movie_data['imdbRating']}')");
请注意,我在绘图字段周围使用了双引号,而在其他所有内容中使用了正常值。当我以与其他人相同的方式绘制绘图字段时,它不会出错但是没有任何内容会插入到表格中......现在它完美无缺。
有人可以告诉我为什么会这样吗?
谢谢
答案 0 :(得分:5)
我怀疑你的情节字符串包含单引号。要避免此问题,您应该使用mysql_real_escape_string
转义字符串值,或者(更好)使用参数化查询。
将单引号更改为双引号的“解决方案”在这种情况下可能会起作用,但如果情节字符串包含双引号则会失败。
答案 1 :(得分:1)
在PHP中,双引号将解析变量,它们中的单引号只是字符串中的单引号。
要将varchar参数传递给mysql,需要将它们括在引号中,因此单引号将作为varchar参数传递给mysql。
您的PHP变量正在双引号内解析,sql字符串将包含您在变量中传递的值。
答案 2 :(得分:1)
在MySQL查询中使用双引号时要小心 - 它们具有不同的含义,具体取决于运行MySQL的SQL模式。
select "fred" from table
在ANSI_QUOTE模式下将返回fred列中的值,否则它将返回文字值 fred 。
答案 3 :(得分:0)
双引号和单引号一起使用可防止程序在查询结束时出现混淆。
例如查询
("Select 'name' From 'contacts'")
如果您使用了所有双引号,则它看起来像这样
("Select "name" From "contacts"")
程序可以让我们认为实际的查询是“选择”
这就是我的想法。