Запрос MySQL, возвращающий пустые строки, хотя у меня нет пустых строк

#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