php sql odbc_execute()与LIKE无法正常工作

时间:2015-04-09 18:07:09

标签: php sql-server odbc prepared-statement

所以我有这段代码没有返回任何东西(echo什么都不返回,应该返回两行):

<?php

include "connection.php";

$cliente = $_POST["cliente"];

$select = "SELECT CLIENTE, NOMCLI FROM CLIX1 WHERE NOMCLI LIKE ? ORDER BY NOMCLI";

$stmt = odbc_prepare($con, $select);

//preparing the array for parameter
$prep_array = array();

$prep_array[] = "'%$cliente%'";

$rs = odbc_execute($stmt, $prep_array);

$nombres = array();

$clienteIDS = array();

//if prepare statement is successful
if($rs)
{
    $i = 0;

    while($row=odbc_fetch_array($stmt)) 
    {
        $cliente_id = trim($row["CLIENTE"]);

        $nombre = utf8_encode(trim($row["NOMCLI"]));

        $nombres[$i] = $nombre;

        $clienteIDS[$i] = $cliente_id;

        $i++;

    }

    echo json_encode($nombres) . "|" . json_encode($clienteIDS);
}

else
{
    echo "error";
}

odbc_close($con);


?>

我知道问题不在于odbc_execute()上的参数传递,因为即使我这样做,它也不会返回任何内容(%mich%它应该显示两行):

$rs = odbc_execute($stmt, array("%mich%"));

你觉得这段代码有什么问题吗?

请提前告知我并提前致谢。

更新------

我对以下答案中建议的代码进行了更改,现在我收到了一个新错误:

Warning: odbc_execute(): Can't open file %mich%

mich 是输入的用于搜索数据库的文本。

1 个答案:

答案 0 :(得分:0)

我发现以下内容可能与您有关:ODBC prepared statements in PHP

$prep_array = array();
$prep_array[] = "'%$cliente%'";
$rs = odbc_execute($stmt, $prep_array);

我认为双引号可能会导致问题。