PHP CLI 中的 mysql_real_escape_string
我有一个想要安排 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要将
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.要使用
mysql_real_escape_string
,您应该先连接到MySQL。关于注释部分的文档
编辑:您应该使用 准备好的语句 并且不要混合 mysql 和 PDO API
To use
mysql_real_escape_string
, you should connect to MySQL first.On the documentation in the note section
EDIT: You should use the prepared statement and not mix mysql and PDO API