gpt4 book ai didi

php - 在查询中使用撇号

转载 作者:行者123 更新时间:2023-11-29 12:13:28 25 4
gpt4 key购买 nike

因此,使用准备好的语句,我尝试使用 ' 进行查询

我有一个名为 $awayteam 的字符串,其中包含:SSS'18 VR1

当我尝试使用上面的字符串查询数据库时,它不起作用......

$conn = new PDO($link, $pdo_username, $pdo_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM clublogo WHERE naam = :name");
//$stmt->bindParam(':name', $awayteam);
$stmt->bindParam(':name', $awayteam, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row){
$awayclublogo = sprintf($row[pad]);

}
$conn = null;

$awayclublogo 将为 NULL

但是,当我仅使用文本执行此操作时,它确实有效。

$conn = new PDO($link, $pdo_username, $pdo_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM clublogo WHERE naam = :name");
$stmt->bindValue(':name', "SSS'18 VR1");
$stmt->execute();
$result = $stmt->fetchAll();
foreach($result as $row){
$awayclublogo = sprintf($row[pad]);

}
$conn = null;

好的,@Devon 指出问题是由于 HTML 编码造成的。让我看看消息来源,确信他是对的。SSS'18 VR

我从数据库获取变量,如下所示:

$conn = new PDO($link, $pdo_username, $pdo_password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM vrip_uitslag WHERE GameID = :name");
$stmt->bindParam(':name', $gameid);
$stmt->execute();
$result = $stmt->fetchAll();


foreach($result as $row) {
$hometeam = sprintf($row[Thuis]);
$awayteam = sprintf($row[Uit]);
}

var_dump($awayteam) 将得到: string(15) "SSS'18 VR1"然后我使用 $awayteam 所以我不知道 HTML 编码发生在哪里......

最佳答案

我认为自从您使用 PHP 以来,已经确定可以使用准备好的语句来解决这个问题。这会自动处理这个问题。

一般来说,在 SQL 中,您可以通过几种方式对其进行转义:

在其前面使用另一个撇号(单引号):

'SSS''18 VR1'

在其前面使用反斜杠:

'SSS\'18 VR1'

关于php - 在查询中使用撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30277127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com