Я столкнулся с проблемой, которая сводит меня с ума. Я импортировал некоторые данные CSV в таблицу в моей базе данных phpadmin и теперь использую скрипт php с mysql_query()
выполнить простой запрос выбора в базе данных и преобразовать результат в формат json — например, SELECT clients FROM TABLE 29
,
По сути, некоторые столбцы в таблице приводят к появлению строки json после прохождения их через mysql_query()
но другие просто возвращают пустое. Я возился часами и не могу понять, почему это так. Последний бит моего кода выглядит так:
$myquery = "SELECT `clients` FROM `TABLE 29`";
$query = mysql_query($myquery) or die(mysql_error());
if ( ! $query ) {
echo mysql_error();
die;
}
$data = array();
for ($x = 0; $x < mysql_num_rows($query); $x++) {
$data[] = mysql_fetch_assoc($query);
}
echo json_encode($data);
mysql_close($server);
Любая помощь будет принята с благодарностью. Это может быть что-то о данных в таблице? Я в недоумении.
благодарю вас!
ОБНОВЛЕНИЕ: длина строк в столбце clients
кажется, оказывает влияние. Когда я заменяю весь текст чем-то более коротким (например, aaa
вместо чего-то вроде company name 111 - 045 - project name - currency - etc
) оно работает. Тем не менее, мне нужно, чтобы он мог обрабатывать длинные строки, так как я хочу, чтобы он просто брал все, что пользователи импортировали в него … что я делаю не так?
Нет, дело не в таблице, а в том, как вы их зацикливаете. Пример:
$data = array();
while($row = mysql_fetch_assoc($query)) { // While a row of data exists, put that row in $row as an associative array
$data[] = $row;
}
echo json_encode($data);
mysql_close($server);
exit;
Примечание: mysql отменен и больше не поддерживается. Используйте улучшенную версию расширения mysql, которая является mysqli, или используйте вместо этого PDO.
После проверки всех строк данных я обнаружил, что источником проблемы является «é» — да, «e» с акцентом. Как только я заменил его на обычное «е», проблема ушла. Так много потерянного времени для чего-то такого крошечного 🙁