我如何逃脱`

时间:2019-03-30 17:51:41

标签: php escaping

我有一个php行,

    $cmd='mysql -h localhost db -e"create table if not exists 
    levermanneasypivotlocal (RecNum bigint(20) NOT NULL AUTO_INCREMENT, 
    tradedate date, `0001.HK` int(9), `0012.HK` int(9) default NULL, PRIMARY 
    KEY(`recnum`) )  AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;"';
    exec($cmd);

如何转义列名?在shell和PHP脚本中,`具有特殊的含义。我需要使用它来解决此问题:NO ALTER or Create of remote db in a federated engine 非常感谢。

1 个答案:

答案 0 :(得分:1)

您可能应该使用数据库连接器(例如PDO或MySQLi),而不是直接与数据库交互并从终端执行MySQL命令

如果使用MySQLi,则可以使用MySQLi_real_escape_string来转义用户输入 https://www.php.net/manual/en/mysqli.real-escape-string.php

或使用PDO,您将使用PDO。 https://www.php.net/manual/en/pdo.prepare.php

这些语句使您可以根据所使用的数据库中使用的编码正确地转义查询。如果更改了数据库上的字符集,则其他转义方法可能无效。