#php #mysql #blank-line
#php #mysql #пустая строка
Вопрос:
У меня есть поисковый запрос, который возвращает результаты из таблицы, однако он также возвращает пустые строки. В моей таблице у меня нет пустых строк.
Я попытался ограничить результаты отображением 1, но, похоже, это никак не влияет. Может быть, у меня нет «если 0 результатов, то …»?
php-код:
<?php
// Create connection
$con=mysqli_connect("server","user","password","database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Select all of our stocks from table 'stock_tracker'
$sql = "
SELECT Task_title
, task_description
FROM TASKS
ORDER
BY RAND () ASC
LIMIT 1
";
// Confirm there are results
if ($result = mysqli_query($con, $sql))
{
// We have results, create an array to hold the results
// and an array to hold the data
$resultArray = array();
$tempArray = array();
// Loop through each result
while($row = $result->fetch_object())
{
// Add each result into the results array
$tempArray = $row;
array_push($resultArray, $tempArray);
}
// Encode the array to JSON and output the results
echo json_encode($resultArray);
}
// Close connections
mysqli_close($con);
?>
Комментарии:
1. Почему у вас
$tempArray
вообще есть? Почему вы просто$row
не добавляете напрямую$resultArray
? Или просто использоватьmysqli_fetch_all()
и возвращать все записи, возвращаемые вам в виде массива, и экономить много работы?2. Честно говоря, я понятия не имею, ха-ха. Как бы вы включили это в мой код? Объясняет ли это, почему я могу возвращать пустые строки случайным образом?
Ответ №1:
Проблема заключалась в UTF8, я отредактировал свой код следующим образом:
echo json_encode($resultArray, DEFINED('JSON_INVALID_UTF8_IGNORE') ? JSON_INVALID_UTF8_IGNORE : 0);
Чтобы найти эту проблему, я добавил в свой скрипт следующее, чтобы показать, какая ошибка была для пустых значений:
Сразу после функции json_encode(), которая у вас есть:
echo json_last_error_msg(); // Print out the error if any
die(); // halt the script