odbc_execute、odbc_fetch_row和odbc_result同时执行



我在一个类中构建了一个准备好的语句:

function reader($ser)
{
$pstmt=odbc_prepare($this->conn,'SELECT TOP 1 "name"
FROM '.$this->table.' WHERE 
"surname" LIKE ? ');        
return odbc_execute($pstmt,array("$ser"));  
}

并通过post

获取$ser
$serTab=$product->reader($ser);

示例$ser:

$ser=' '3221252'';

当涉及到显示值时,这些函数不返回任何值(但它们与odbc_exec一起工作):

while(odbc_fetch_row($serTab)) 
{ 
for($i=1;$i<=odbc_num_fields($serTab);$i++) 
{
echo odbc_result($serTab,$i);                       
}
}

这些函数还有其他的替代方法吗?为什么用obdc_execute不返回任何东西?我该如何解决这个问题?

不能使用PDO,因为这个错误:

参数/列(5)从数据类型NVARCHAR到ASCII的转换失败的

我没有权限修改数据库,因此没有权限修改数据类型。DBMS: SAP Hana

添加

$ser=str_replace(array("'", "'"," "),"",$ser) 

之前
odbc_prepare

和改变

return odbc_execute($pstmt,array("$ser")); 

return odbc_execute($pstmt,array($ser));  

odbc_execute只是返回一个布尔值来表示成功或失败。您需要返回的是$pstmt:

function reader($ser)
{
$pstmt = odbc_prepare($this->conn, 'SELECT TOP 1 "name"
FROM '.$this->table.' WHERE 
"surname" LIKE ? ');        
if(!odbc_execute($pstmt, array("$ser")))
die('odbc_execute failed');
return $pstmt;
}

最新更新