【发布时间】:2025-11-29 09:30:01
【问题描述】:
我正在尝试在 PHP 中使用 odbc_prepare 和 odbc_execute,如下所示:
$pstmt=odbc_prepare($odb_con,"select * from configured where param_name='?'");
$res=odbc_execute($pstmt,array('version'));
var_dump($res); //bool(true)
$row = odbc_fetch_array($pstmt);
var_dump($row); //bool(false)
第一个 var_dump 返回 true,因此执行成功,但没有返回任何行。 param_name = 'version' 确实存在一行。为什么没有返回行?
为了让事情变得有趣,我使用准备好的插入在 php 中运行了另一个非常简单的示例。
$pstmt=odbc_prepare($odb_con,"insert into tmp1 values(?,'?')");
这一行本身就向数据库中插入了一行!!这肯定是错的吗?输入的数据是 col 1 = 空白,col 2 = ?
任何关于从哪里开始解决此问题的建议将不胜感激,谢谢。
编辑:这是在 PHP 5.2.8 中
【问题讨论】:
-
odbc_num_rows($res);返回什么?我想确认查询确实返回了非空结果。odbc_fetch_array()可能返回 false,因为结果集中没有行。另外,您的 PHP 错误日志中是否出现任何错误消息? -
您尝试过我建议的解决方案吗?请提供反馈
-
不幸的是,新的回复将不得不等到我有时间再次查看这个特殊问题。我现在有其他任务。
-
只是为了更新这个问题:我从来没有找到解决方案。我只需要没有准备好的陈述。我怀疑它是安装在我正在开发的系统上的 ODBC 驱动程序。不幸的是,这不能很快改变。
-
这是一篇旧帖子,但是如果您想循环选择语句的结果,您会怎么做?我正在尝试做类似的事情
标签: php odbc prepared-statement