1

我发现了问题,现在我的插入查询有效,但我不明白为什么。这是我当前的工作查询:

$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']}')");

请注意,我在绘图字段周围使用了双引号,而在其他所有内容周围使用了正常。当我以与其他人相同的方式制作绘图字段时,它不会出错,但不会将任何内容插入表中......现在它可以完美运行。

谁能告诉我这是为什么?

谢谢

4

4 回答 4

5

我怀疑您的情节字符串包含单引号。为避免该问题,您应该使用 转义字符串值mysql_real_escape_string,或者(更好地)使用参数化查询。

在这种情况下,您将单引号更改为双引号的“解决方案”似乎可行,但如果绘图字符串包含双引号,它将失败。

于 2012-07-06T21:29:23.877 回答
1

在 MySQL 查询中使用双引号时要小心 - 根据 MySQL 运行的 SQL 模式,它们具有不同的含义。

select "fred" from table

在 ANSI_QUOTE 模式下将返回列 fred 的值,否则将返回字面值fred

于 2012-07-06T21:39:48.553 回答
1

在 PHP 中,双引号将解析它旁边的变量,其中的单引号将只是字符串中的单引号。

要将 varchar 参数传递给 mysql,它们需要用引号括起来,因此单引号将作为 varchar 参数传递给 mysql。

您的 php 变量在双引号内进行解析,并且 sql 字符串将包含您在变量中传递的值。

于 2012-07-06T21:30:43.433 回答
0

双引号和单引号一起使用以防止程序混淆查询结束的位置。

例如查询

 ("Select 'name' From 'contacts'")

如果您使用所有双引号,那么它看起来像这样

 ("Select "name" From "contacts"")

并且可以让程序认为实际查询是“选择”

我认为就是这样。

于 2012-07-06T21:27:13.977 回答