Подготовленный параметр LIKE не работает с SQLSRV

Я использую SQLSRV 3.0 для PHP и работаю против MSSQL2008.

Моя проблема заключается в том, что я не могу получить оператор LIKE в запросе для работы?

$connectionOptions = array( "Database"=>$myDB, "UID"=>$myUser, "PWD"=>$myPass);
$conn = sqlsrv_connect( $myServer, $connectionOptions);

$params = array(
"$sID%",
"$sUser%");
$sql = "select * from tbl where col2 LIKE ? or col2 LIKE ?";

$stmt = sqlsrv_query($conn, $sql, $params);

if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}

Проблема связана с дизайном элементов в массиве params, есть предложения?

С уважением, Яким

1

Решение

Настройте свой код на следующее:

$sql = "select * from tbl where col2 LIKE ? or col2 LIKE ?";
$params = array($sID."%", $sUser."%");
$stmt = sqlsrv_query( $conn, $sql, $params);
1

Другие решения

Попробуйте сделать это:

$strSQL = "SELECT * FROM tbl WHERE col2 like '%' + CONVERT(NVARCHAR, ?) + '%' or col2 like '%' + CONVERT(NVARCHAR, ?) + '%' ";

$searchTerm = "<<some multibye characters>>";

$searchTerm = iconv('utf-8', 'utf-16le', $searchTerm);

$params = array( array($searchTerm, NULL, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY)));
0

По вопросам рекламы [email protected]