Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示MySQL表中的字段,但不显示带引号的字段_Php_Mysql_Mysql Real Escape String_Stripslashes - Fatal编程技术网

Php 显示MySQL表中的字段,但不显示带引号的字段

Php 显示MySQL表中的字段,但不显示带引号的字段,php,mysql,mysql-real-escape-string,stripslashes,Php,Mysql,Mysql Real Escape String,Stripslashes,我从MySQL表中获取数据,并将其显示在页面上。脚本正在显示信息,但在我的表普通引号中,我们作为另一种类型的引号字符插入,例如(')和(“”)在Microsoft Word 2010中键入内容时,会自动以这种方式格式化,Microsoft Word 2010用于键入表中的大多数条目。所以我猜这些是特殊字符。但是,每当我测试显示一个带有实际单引号的字段时,(')和(“”)我收到一个mysql\u fetch\u行希望参数1是一个资源,布尔值给出了一个错误。这是我使用的代码: $result = m

我从MySQL表中获取数据,并将其显示在页面上。脚本正在显示信息,但在我的表普通引号中,我们作为另一种类型的引号字符插入,例如<代码>(')和
(“”)
在Microsoft Word 2010中键入内容时,会自动以这种方式格式化,Microsoft Word 2010用于键入表中的大多数条目。所以我猜这些是特殊字符。但是,每当我测试显示一个带有实际单引号的字段时,
(')
(“”)
我收到一个mysql\u fetch\u行希望参数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\u real\u escape\u字符串(stripslashes($fields))
将显示带有实引号的字段,但在引号前带有正斜杠。
有人能帮我找到解决办法吗?

如果
mysql\u-fetch\u-row()
正在抱怨一个布尔值,这意味着
mysql\u-query
要么没有返回行,要么SQL有错误(
mysql\u-error()
会告诉你是哪个)

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


另外,我认为你必须学习角色编码。默认的MySQL安装将不是UTF8,恐怕它可能是ISO-8859-15。Word过去喜欢在不同的Windows-1252中编写文本。然后,无论是什么浏览器、网站还是其他与数据库使用有关的东西,它都会变得更加复杂。我相信PhpMyAdmin试图在UTF8中运行,所以如果数据不是UTF8,它们将被转换到您的表中。这也会影响您查找“智能报价”的查询。

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

其中,
$result
的计算结果为布尔值,这意味着生成的查询中存在错误(
从{$db\u table\u alt}中选择问题
)。尝试回显该查询并手动运行它。可能是由
{$db\u table\u alt}
命名的表/视图不存在

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


此外,如果数据库中的数据是通过斜杠转义的,那么您应该阅读魔法引号以及如何处理它们:。从数据库中提取数据时,不必进行任何字符串转义。

表中的实际数据是什么?当您在该列上运行select时,phpmyadmin或您正在使用的任何客户端都会显示什么?当我使用phpmyadmin时,它会正确地显示与查询对应的列,但它是一个完整的php(如果它是一个quote,dispite mysql\u real\u escape\u string和stripslashes,则不会显示)这两个表之间有什么联系?$db\u table\u alt变量中有什么?看起来您不需要两个查询,只需要一个。不过解决方案非常简单。我想知道为什么那边的两个家伙错过了它。魔法引号没有启用,我运行了一行代码
echo“魔法引号是”。(get_magic_quotes_gpc()?“开”:“关”)返回OFFI,我确实回显了查询并手动运行它,它打印了所有字段,甚至是我正在测试的包含“真实引号”的字段。但在页面底部,带有“real quotes”的字段应该像其他字段一样以段落格式显示,它只会发出mysql\u fetch\u行错误。有什么想法吗?你要传递给mysql\u fetch\u行的资源不是资源。它可能在某个地方被覆盖,但如果没有代码,很难说。标准做法是剥离所有不相关的代码,以便只显示未完成预期任务的部分。这是我用来显示字段的所有代码的副本,所以你可以帮我更多的忙。我猜是第66行和第78行导致了错误。尝试回显生成的查询并对MySQL运行它(使用phpmyadmin或您正在使用的任何东西),然后看看会发生什么。我希望
$fields
包含引号,并导致无效SQL,导致
mysql\u查询
返回
false
,而不是resource.OMG,
“您不必担心这里的SQL注入”