我在一个类中构建了一个准备好的语句:
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;
}