【问题标题】:php pdo mysql wont return text with quotesphp pdo mysql不会返回带引号的文本
【发布时间】:2013-03-17 20:34:42
【问题描述】:

好的,所以对于我的应用程序,我使用 php 的 pdo 和 mysql,我在数据库中有这个:

"Tiny & Big: Grandpa's Leftovers" - 75% off

现在由于某种原因,其中包含引号不会让我将其回显到表单字段进行编辑,它适用于任何没有引号的条目。

现在我检查了我的查询输出,它清楚地为我提供了选择:

[info] => "Tiny & Big: Grandpa's Leftovers" - 75% off

所以我在徘徊为什么它不能使用它?

我使用这个小功能获取数据:

    public function fetch()
{
    $this->STH->setFetchMode(PDO::FETCH_ASSOC); 
    return $this->STH->fetch();
}

以及实际的查询功能:

    // the main sql query function
public function sqlquery($sql, $objects = array())
{
    global $core;

    try
    {
        $this->STH = $this->database->prepare($sql);

        foreach($objects as $k=>$p)
        {
            // +1 is needed as arrays start at 0 where as ? placeholders start at 1 in PDO
            if(is_numeric($p))
            {
                $this->STH->bindValue($k+1, (int)$p, PDO::PARAM_INT);
            }
            else
            {
                $this->STH->bindValue($k+1, $p, PDO::PARAM_STR);
            }
        }

        return $this->STH->execute();
    }

    catch (Exception $e)
    {
        $core->message($e->getMessage());
    }

    $this->counter++;

    $this->queries .= "<br />$sql";
}

【问题讨论】:

    标签: php html mysql pdo


    【解决方案1】:

    “用于编辑的表单字段”是对我的提示,您正在执行以下操作:

    <input value="<?php echo $row['info']; ?>">
    

    由于info 字段中的引用,这不会很好地工作。它输出value=""。使用 htmlspecialchars($row['info'], ENT_QUOTES) 正确转义 html 中发射的引号。

    【讨论】:

    • 嗯,我是否应该一直这样做,我将数据库输出放入文本字​​段?
    • 解决了!所以谢谢你,我会使用实体,因为有时用户可能会放双,有时会放单。
    • @MichaelBerkowski htmlspecialchars 将转换两者并设置ENT_QUOTES
    猜你喜欢
    • 2012-11-12
    • 2013-03-21
    • 2012-05-10
    • 2021-12-27
    • 2018-04-24
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多