我发现了这个问题,现在我的插入查询可以正常工作,但我不明白为什么。这是我目前的工作查询:
$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']}')");
请注意,我在绘图字段周围使用了双引号,在其他所有内容周围使用了正常引号。当我以与其他人相同的方式执行绘图字段时,它不会出错,但不会将任何内容插入到表中......现在它工作得很好。
谁能启发我为什么会这样?
谢谢
我怀疑您的绘图字符串包含单引号。为了避免这个问题,你应该使用mysql_real_escape_string
转义字符串值,或者(最好)使用参数化查询。
在这种情况下,将单引号更改为双引号的"解决方案"似乎有效,但如果绘图字符串包含双引号,它将失败。
在 PHP 中,双引号将解析旁边的变量,其中的单引号将只是字符串中的单引号。
要将 varchar 参数传递给 mysql,它们需要括在引号中,因此单引号作为 varchar 参数传递给 mysql。
您的 php 变量正在双引号内解析,sql 字符串将包含您在变量中传递的值。
在MySQL查询中使用双引号时要小心 - 根据MySQL运行的SQL模式,它们具有不同的含义。
select "fred" from table
在ANSI_QUOTE模式下将返回 fred 列中的值,否则它将返回文本值 fred。
双引号和单引号一起使用,以防止程序混淆查询的结束位置。
例如查询
("Select 'name' From 'contacts'")
如果您使用了所有双引号,那么它看起来像这样
("Select "name" From "contacts"")
并且可以让程序认为实际查询是"选择"
我就是这么想的。