Php 如何在不访问数据库连接的情况下对Mysqli转义字符串?

Php 如何在不访问数据库连接的情况下对Mysqli转义字符串?,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试修改一些代码,如果可能的话,我想使用mysqli而不是mysql。这是今天的样子 $query = sprintf("select * from table where column = '%s';",mysql_escape_string($value)); $result = do_query_mysqli($query, __FILE__, __LINE__); do_query_mysqli函数位于另一个文件中,如果可能,我不想修改该文件。该函数还包括连接到数据库的$link

我正在尝试修改一些代码,如果可能的话,我想使用mysqli而不是mysql。这是今天的样子

$query = sprintf("select * from table where column = '%s';",mysql_escape_string($value));
$result = do_query_mysqli($query, __FILE__, __LINE__);
do_query_mysqli函数位于另一个文件中,如果可能,我不想修改该文件。该函数还包括连接到数据库的$link

我无权访问正在修改的文件中的$link

如果我想获得类似的结果,但我没有访问$link的权限,那么下面代码的最佳替代方案是什么

$value = mysqli_real_escape_string($link, $value);
谢谢

编辑-
没有一个答案和注释解决了我的问题,即我试图在不必更改执行查询的函数的情况下降低sql注入的风险。不过,无论如何,我都会研究建议的解决方案。谢谢。

对于mysqli,为了避免SQL注入,我发现最好使用bind_参数和bind_结果

$select1 = $con->prepare("SELECT jobnumber ,starttime ,endtime, title from JobSheet WHERE starttime BETWEEN ? AND ?;");
$select1->bind_param('ss', $mondayMidnight, $sundayMidnight);
$select1->bind_result($jobnumber, $starttime, $endtime, $title);
$select1->execute();
只选择您感兴趣的列来满足您正在使用的查询也是一种很好的做法。从…中选择*。。。这是一个雷区,是一个程序错误,当有人改变表格时,等待发生


绑定参数不允许SQL注入,因为SQL已经准备好了。

对于mysqli,为了避免SQL注入,我发现最好使用绑定参数和绑定结果

$select1 = $con->prepare("SELECT jobnumber ,starttime ,endtime, title from JobSheet WHERE starttime BETWEEN ? AND ?;");
$select1->bind_param('ss', $mondayMidnight, $sundayMidnight);
$select1->bind_result($jobnumber, $starttime, $endtime, $title);
$select1->execute();
只选择您感兴趣的列来满足您正在使用的查询也是一种很好的做法。从…中选择*。。。这是一个雷区,是一个程序错误,当有人改变表格时,等待发生


bind_param不允许SQL注入,因为SQL已经准备好了。

如果确实需要,在手册页的用户说明中有一个函数,您可以使用。恐怕您必须更改该函数。如果不使用数据库连接,就没有100%安全的方法来做您想要做的事情。当前的代码结构根本不足以完成此任务。如果您确实必须这样做,则在的手册页的用户说明中有一个函数,您可以使用。恐怕您必须更改此函数。如果不使用数据库连接,就没有100%安全的方法来做您想要做的事情。当前的代码结构根本不足以完成任务。