0

我正在从 MySQL 表中获取数据以将其显示在页面上。该脚本正在显示信息,但在我的表中,我们插入了普通引号作为另一种类型的引号字符,例如。( ’ )并且( “ ” )当在 Microsoft Word 2010 中键入内容时,它们会自动以这种方式格式化,用于键入表中的大多数条目。所以我的猜测是那些是特殊字符。但是,每当我测试显示一个带有实际单引号的字段( ' )并且( " " )我收到一个mysql_fetch_row 期望参数 1 是资源时,布尔给定错误。这是我使用的代码:

$result = mysql_query("SELECT `question` FROM {$db_table_alt}");

while($field = mysql_fetch_row($result)) {
foreach($field as $fields) {

//build a unique section ID based on the ID that the Question belongs to
$uid = mysql_query("SELECT `id` FROM `questions` WHERE `question` LIKE '%$fields%'");
while($uidfield = mysql_fetch_row($uid)) {

但是每当我使用此行时 ,将显示带有真实引号$fields = mysql_real_escape_string(stripslashes($fields)); 的字段,但在引号前带有正斜杠。有人可以帮我找到解决方案吗?

4

2 回答 2

-1

如果mysql_fetch_row()正在抱怨一个布尔值,这意味着mysql_query要么没有返回任何行,要么 SQL 有一个错误(mysql_error()会告诉你哪个)。

如果您在返回数据中的引号之前收到反斜杠,那么它们将被放入数据库中。听起来像是magic_quotes启用了。你真的想把它关掉,因为它是一个过时的和破碎的问题解决方案。

另外,我认为您将不得不学习字符编码。恐怕默认的 MySQL 安装不会是 UTF8,它可能是 ISO-8859-15。Word 过去喜欢在 Windows-1252 中编写文本,现在不一样了。然后,无论使用何种浏览器、网站和其他与数据库通信的东西,它都会变得更加复杂。我相信 PhpMyAdmin 会尝试在 UTF8 中运行,因此如果它们不是 UTF8 ,数据将被转换为您的表。这也会影响您寻找“智能报价”的查询。

于 2012-04-13T01:41:22.730 回答
-1

您在这里似乎有两个明显的问题。

其中一个$result是对布尔值求值,这意味着生成的查询中存在错误 ( SELECT question FROM {$db_table_alt})。尝试回显该查询并手动运行它。可能是由命名的表/视图{$db_table_alt}不存在。

第二个是字符串转义问题。我希望引号在数据库中被转义 -mysql_real_escape_string在查询上使用不会改变返回的结果是否被转义。

此外,如果您在数据库中的数据被斜杠转义,您应该阅读魔术引号以及如何处理它们: PHP docs on magic quotes。从数据库中提取数据时,您不必进行任何字符串转义。

于 2012-04-13T01:44:46.400 回答