数据库
首页 > 数据库> > php – 我永远不能执行SQL安全查询?

php – 我永远不能执行SQL安全查询?

作者:互联网

我在PHP中使用ODBC扩展连接到SQL 2000服务器.这是我反对的:

>我可以用odbc_exec()OR执行查询
>我可以使用odbc_execute()执行查询

在我看来,这两种查询执行方法之间的差异几乎与日夜不同:

> odbc_exec()将执行非SQL安全查询并返回查询结果
> odbc_execute()与odbc_prepare()结合使用,以对数据库执行SQL安全查询.但是,odbc_execute()只能返回一个布尔值,因此不能用于从SELECT语句返回结果,或者检查从UPDATE或DELETE语句更新的行数

这真的是这一切的方式,还是有一些方法来逃避在odbc_exec()中使用的值或从odbc_execute()获取结果?

对于上述困境,PHP文档似乎没有任何解决方案.

感谢您的时间.

解决方法:

正在运行的查询的资源由odbc_prepare函数返回,而不是odbc_execute.

这两个代码块做同样的事情:

$query=odbc_exec("SELECT * FROM table WHERE userinput=".$hopefully_escaped_user_input);
while($row=odbc_fetch_array($query) {
  //do stuff with $row
}



$query=odbc_prepare("SELECT * FROM table WHERE userinput=?");
odbc_execute($query,Array($user_input);
while($row=odbc_fetch_array($query) {
  //do stuff with $row
}

标签:php,sql,odbc,sql-server-2000
来源: https://codeday.me/bug/20190725/1538363.html