mysql — пустой результат для некоторых столбцов, когда php mysql_query, работает в phpmyadmin

Я столкнулся с проблемой, которая сводит меня с ума. Я импортировал некоторые данные 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) оно работает. Тем не менее, мне нужно, чтобы он мог обрабатывать длинные строки, так как я хочу, чтобы он просто брал все, что пользователи импортировали в него … что я делаю не так?

0

Решение

Нет, дело не в таблице, а в том, как вы их зацикливаете. Пример:

$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.

1

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

После проверки всех строк данных я обнаружил, что источником проблемы является «é» — да, «e» с акцентом. Как только я заменил его на обычное «е», проблема ушла. Так много потерянного времени для чего-то такого крошечного 🙁

0

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