我在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()获取结果?
感谢您的时间.
解决方法:
正在运行的查询的资源由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
}