0

我有来自 mysql 数据库的信息,我通过 php 获取并回显到页面中。我首先注意到了我的问题,因为我在输出中看到了一些 \' 以及一些带有问号的黑色菱形。我做了一些研究并意识到了两件事。

  1. 我设计的工具将信息输入我的数据库很糟糕,因为它包含转义字符。

  2. 我可以通过调用 stripslashes 来解决这个问题。

使用带斜杠从输出中删除了 \,但是无法识别的字符仍然存在。我调查了一下,意识到这是某种字符编码问题。但我不明白的是,我在数据库中有一些字段被转义(\),而另一些则没有。例如:

今天的菜是昨天的菜。

我不明白为什么一个单引号会被转义而一个不会。其他一些无法识别的字符包括一些双引号 (")、一些逗号 (,) 甚至一些句点(特别是省略号 ...)。

我错过了什么?

此外,我的数据库是 utf-unicode 格式,只是为了澄清我在某些数据库条目的同一字段中同时拥有 \' 和 ' 。如果这有所作为,这些条目是 varchar。

如果我需要提供任何其他信息,请告诉我。

4

1 回答 1

0

PHP .net这是粘贴在一起的两段代码。它使用 PDO 与数据库通信。这比使用 stripslashes 好很多msqli_real_escape_string

<?php
/* Connect to an ODBC database using driver invocation */
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $dbh = new PDO($dsn, $user, $password);
    /* Execute a prepared statement by binding PHP variables */
    $calories = 150;
    $colour = 'red';
    $sth = $dbh->prepare('SELECT name, colour, calories
        FROM fruit
        WHERE calories < :calories AND colour = :colour');
    $sth->bindParam(':calories', $calories, PDO::PARAM_INT);
    $sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
    $sth->execute();
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

?>
于 2013-03-15T19:14:31.970 回答