У меня есть приложение для iOS, в котором я создал API для извлечения некоторых данных из базы данных SQL Server.Когда мое приложение отправляет запрос с пустой строкой, оно не возвращает никаких строк, хотя и должно.
$connectionInfo = array( "Database"=>db, "UID"=>$user, "PWD"=>$pass);
$conn = sqlsrv_connect($ip, $connectionInfo);
if ( $conn ) {
//connected
}
else {
echo "Error:"; echo "<br>";
die( print_r( sqlsrv_errors(), true));
}
/**************************************/
/* RETRIEVAL */
/**************************************/
$prod = new StdClass(); $arr = array(); $temp = array();
$search = $_GET['search'];
$search = "%$search%";
$sql = "SELECT
name, qty
FROM
table
WHERE
name LIKE ?";
$stmt = sqlsrv_prepare( $conn, $sql, array($search));
sqlsrv_execute( $stmt );
$i = 0;
if ( $stmt === false ) {
die( print_r( sqlsrv_errors(), true) );
}
else {
while ( $row=sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC) ) {
$newProd = clone $prod;
$newProd->mainInfo = $row['name'];
$newProd->secondInfo = $row['qty'];
$arr[] = $newProd;
}
}
http_response_code(200);
echo json_encode($arr);
sqlsrv_close($conn);
Я построил API с PHP и Apache на macOS, где он работал как задумано.Когда я скопировал файлы на сервер Windows, если мое приложение получило доступ к ссылке, подобной 192.168.0.102/file.php?search=
, оно не вернуло бы строк в Windows, а в macOS вернуло бы все строки таблицы, как я и хотел.Я знаю, что скрипт работает, и нет никаких проблем, потому что, если мое приложение получает доступ к ссылке, подобной 192.168.0.102/file.php?search=someName
, оно возвращает соответствующие строки.Я хочу, чтобы приложение отображало все строки, если переменная search
пуста.Должен ли я использовать какой-то другой способ для достижения этого, или это какая-то ошибка с моей стороны.