gpt4 book ai didi

php - MySQL 和 PHP 转义反斜杠

转载 作者:行者123 更新时间:2023-11-29 05:09:38 34 4
gpt4 key购买 nike

我有一个常量,它是一个包含反斜杠 \ 的字符串。

问题是,MySQL 似乎逃避了这个字符,这不是预期的行为。

代码如下:

const METHOD_TYPE_CREDITCARD = "Braintree\CreditCard";

$sql = "SELECT transaction_id AS id,
CASE
WHEN source_type = '0' THEN '".PaymentGateway::METHOD_TYPE_CREDITCARD."'
END AS source
FROM transactions WHERE invoice_id = :id"

它肯定会正确运行查询,但会转义 \。所以输出看起来像:

[id] => myx0kpe8
[source] => BraintreeCreditCard

我尝试了@strawberry 提到的方法。还是一样的结果

const METHOD_TYPE_CREDITCARD = "Braintree\\CreditCard";

最佳答案

你所做的,是一个自制的 SQL 注入(inject)。

如前所述,您应该使用 prepared statements 形式的参数(PDO 或 mysqli 中的等效项)而不是字符串连接。

$stmt = $dbh->prepare("SELECT transaction_id AS id,  
CASE
WHEN source_type = '0' THEN ':creditcard'
END AS source
FROM transactions WHERE invoice_id = :id");
$stmt->bindParam(':creditcard', PaymentGateway::METHOD_TYPE_CREDITCARD);

出于安全考虑,您应该始终使用参数。这些天不使用它是疯了,因为Sql Injection .

关于php - MySQL 和 PHP 转义反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758113/

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