我使用 sql server 2008 并且有 PDO 连接
$con = new \PDO("sqlsrv:Server={$config['server']};Database={$config['database']}", $config['username'], $config['password']);
$con->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
$con->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_ASSOC);
我想要的是,我需要保存包含“&”符号的目录名称而不转换为
&
eg - 目录名称 - “新旧”
当我保存在数据库中时,它转换为“
New & old
”。我想停止这种转换。我如何将其另存为“新旧”
这是数据保存代码-
$stmt = $this->db->prepare( "SET NOCOUNT ON DECLARE @return_value int
EXEC @return_value = [dbo].[sp_update_t_Rfile2_RF2_Path]
@RF2_RfileID_pk_ind = ?, @RF2_Path = ?
SELECT 'Return Value' = @return_value
");
$return = null;
$stmt->bindParam(1,$fields['RF2_nd'],\PDO::PARAM_STR );
$stmt->bindParam(2,$fields['Path_New'],\PDO::PARAM_STR);
$stmt->execute();
我使用 POST 请求而不是任何 Ajax 调用此代码。当我在此代码之前打印 $fields['Path_New'] 时,它正确返回“新和旧”,在 POST 时不会发生任何编码。
数据库列数据类型是 varchar(265),我使用 PHP 5.3 的 IIS 服务器
我有两个系统在同一个数据库上运行,一个是 Access 系统,另一个是 PHP Web 应用程序。访问系统无法使用
&
请帮助我停止将“&”编码为
&
谢谢
最后我找到了解决方案,停止保存 & 作为
&
我们需要解码 html 编码(UTF-8)。
(PHP 4 >= 4.3.0,PHP 5)
html_entity_decode
— 将所有 HTML 实体转换为其适用的字符
更多信息 - http://php.net/manual/en/function.html-entity-decode.php
现在我可以保存 & 而无需转换为
&
我更新的代码是 -
@RK_Path = N'".\html_entity_decode($fields['txtRK_Path'])."',
谢谢。
您应该在所有页面、php 文件和排序数据库中使用 UTF-8。 还要检查一下: https://stackoverflow.com/a/11249695/1919749
将 MYSQL 数据库中的排序规则以及 php 脚本中的编码更改为 UTF-8
这可能对你有帮助, 使用方法
mysqli_real_escape_string()
示例如下,
// Sample data with special characters
$data = "& should not be converted to &";
// Escape the special characters before inserting into the database
$escapedData = mysqli_real_escape_string($conn, $data);