PHP 无法识别符号 '

Posted

技术标签:

【中文标题】PHP 无法识别符号 \'【英文标题】:PHP doesn't recognise symbol 'PHP 无法识别符号 ' 【发布时间】:2018-05-09 12:37:04 【问题描述】:

很抱歉问这个问题,我确定有人问过这个问题,但是因为我不知道这个符号的名称,所以我无法真正搜索。

问题,我有一个带有文本的 mysql 数据库,这些文本可能有类似这样的内容(嗨,我不知道如何解决这个问题)。一旦我使用 php 查询该文本并在 html 上回显,它就会显示这个。

您好,我不知道如何解决此问题

代码:

$sql = mysqli_query($connection,"SELECT Something FROM something WHERE ID = '1';");
$row = mysqli_fetch_object($sql);
$description = $row->DESCRIPTION;


<p style="margin-top: 3%">
   <?php echo$description?>
</p>

【问题讨论】:

使用 htmlentities 或 htmlspecialchars 您的代码编辑器设置为什么字符编码? UTF-8 如果这就是你的意思 是的,IMO 撇号不需要 htmlspecialchars 或 htmlentities,它是标准字符 PHP output showing little black diamonds with a question mark的可能重复 【参考方案1】:

始终尝试将 MySQL 编码设置为 UTF-8 作为第一步。它会解决大部分问题。

在 PHP 端你可以这样做:-

mysqli_set_charset($connection, "utf8")

如果上面没有使用那么

要么你必须使用htmlentities()

<?php echo htmlentities($description);?>

或者你必须使用htmlspecialchars()

<?php echo htmlspecialchars($description, ENT_QUOTES);?>

【讨论】:

感谢它的解决方案。到最后,我不需要使用 htmlentities() 和 htmlspecialchars(),我只需要 mysqli_set_charset($connection, "utf8")。感谢您的帮助。我从来没有将mysql设置为utf8。谢谢学到了一些新东西:) 嗯,不确定您是否应该建议更改为 utf-8 - 也许他们需要不同或特定的东西?也许这会有问题 - 如果不调查这将无法确定。抛出这样的命令可能很危险 imo @James 不好意思问,但可能是什么问题? 更改整个数据库字符集并不是您通常会做的事情。取决于您的数据库大小、数据等。似乎它对您有用,所以我猜没有问题。请小心运行此类命令,而不要首先调查确切它将改变什么以确保您没有破坏某些东西。即这是一个带有小表的单个数据库,也许你现在只是在开发它,或者它是在生产中使用大量的客户端数据......等等。当建议更改您的字符集时,这是不知道的,所以请小心运行在互联网上找到的命令 :) @James 感谢您告诉我。我的印象是它会改变数据的输出,但不会改变数据库本身。所以这意味着我的数据库现在运行在 utf-8 上?不知道是好是坏【参考方案2】:

看看 mysqli_real_escape_string

它应该可以帮助您解决问题并提高脚本的安全性(SQL 注入)。 htmlentities() 也应该有帮助。

编辑:正如cmets中提到的:代替mysqli_real_escape_string,实际上使用prepared statements更加安全。

【讨论】:

mysqli_real_escape_string 是一个中途的解决方案。您应该始终使用带有绑定变量的准备好的语句 @rypskar 嗯,如果我想多次执行同一个语句,我会使用准备好的语句,只是使用不同的参数。如果我只想运行一次,我使用 mysqli_real_escape_string。准备好的语句是否为单次执行提供更好的性能? mysqli_real_escape_string 不一定安全。为什么不为使用准备好的语句并接受变量或数组并重新使用它的简单查询提供基类/函数;) 感谢@James 的澄清。这正是我在 uni 学到的:为相同格式的多个查询准备语句,为单个查询转义。但是你在大学学到的东西并不总是那么实际相关,我猜......;)我会更新我的答案。 没有问题 :) 如果我在 Stack Overflow 中看到的课程作业中的代码是可以参考的,那么他们并不总是能教授出色的代码,哈哈

以上是关于PHP 无法识别符号 '的主要内容,如果未能解决你的问题,请参考以下文章

无法链接 OpenGL 兼容性配置文件(无法识别 EXT 符号)

Tesseract OCR 无法识别除法符号“÷”

尝试将 /proc/kallsyms 添加到 gdb 以进行 vmlinux 调试:`/proc/kallsyms':无法读取符号:文件格式无法识别

将 SOIL.lib 与 GCC 一起使用 - 添加符号时出错:无法识别文件格式

getIntent 错误,无法识别

无法识别 PHP 工匠