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
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...