PHP CLI 中的 mysql_real_escape_string

发布于 2024-12-22 10:08:42 字数 676 浏览 0 评论 0原文

我有一个想要安排 cron 的脚本。当我在浏览器中测试时,一切都很好,正常工作,但是当从 php cli (php cron.php) 运行时,mysql_real_escape_string 丢失了给定的值。

知道为什么吗?

使用 mysql_real_escape_string 之前建立的代码和连接进行了更新(但仍然不起作用)

$dbh = new PDO("mysql:host=localhost;dbname=xxx", 'xxx', 'xxx');  
foreach ($prosArr[$i] as $val => $key) {
    $fieldsStr  .= "`".trim($val). '` , ';
    $fieldVal   .= '"'.mysql_real_escape_string($key). '" , ';
}

这是直接从同一 CLI 脚本获得的 $prosArr[$i] 的输出 print_r

Array
(
    [ProductCode] => 10077
    [BranchCode] => 100
    [RetailPrice] => 499.0000
    [PromotionPrice] => 0.0000
    [FullPrice] => 499.0000
)

I have a script that I want to cron scheduled. Its all fine and dandy when I tested in the browser, working as it should but when run from php cli (php cron.php), mysql_real_escape_string loses the value given.

Any idea why?

UPDATED with code and a connection made before mysql_real_escape_string (but still not working)

$dbh = new PDO("mysql:host=localhost;dbname=xxx", 'xxx', 'xxx');  
foreach ($prosArr[$i] as $val => $key) {
    $fieldsStr  .= "`".trim($val). '` , ';
    $fieldVal   .= '"'.mysql_real_escape_string($key). '" , ';
}

Here is output print_r of $prosArr[$i] obtained straight from the same CLI script

Array
(
    [ProductCode] => 10077
    [BranchCode] => 100
    [RetailPrice] => 499.0000
    [PromotionPrice] => 0.0000
    [FullPrice] => 499.0000
)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

╭ゆ眷念 2024-12-29 10:08:42

不要将 mysql_real_escape_string() 与 PDO 一起使用。它们是不同的库,并且不适合彼此使用。

请改用 PDO::Quote 或参数化查询。

Do not use mysql_real_escape_string() with PDO. They are different libraries and have are not meant to be used with each other.

Use PDO::Quote or parametrized queries instead.

顾冷 2024-12-29 10:08:42

要使用mysql_real_escape_string,您应该先连接到MySQL。

关于注释部分的文档

使用 mysql_real_escape_string() 之前需要连接 MySQL
否则会产生 E_WARNING 级别的错误,且为 FALSE
回来了。如果未定义 link_identifier,则最后一个 MySQL 连接
已使用。


编辑:您应该使用 准备好的语句 并且不要混合 mysql 和 PDO API

To use mysql_real_escape_string, you should connect to MySQL first.

On the documentation in the note section

A MySQL connection is required before using mysql_real_escape_string()
otherwise an error of level E_WARNING is generated, and FALSE is
returned. If link_identifier isn't defined, the last MySQL connection
is used.


EDIT: You should use the prepared statement and not mix mysql and PDO API

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文