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中执行存储过程后调用odbc_fetch_array会出现错误[Microsoft] [ODBC SQL Server驱动程序]无效的描述符索引


下一篇:在Visual Studio 2008上使用MySQL