Запрос PDO разбивает столбец SQL на массив символов - PullRequest
0 голосов
/ 27 апреля 2018

При запросе к моей локальной базе данных для одного столбца вместо возврата массива строк он возвращает многомерный массив с каждой строкой, разделенной на отдельные символы.

enter image description here

Запрос PDO:

$hostname = '127.0.0.1';
$username = 'db_user';
$password = 'db_pass';
$dbname = 'db_name';
$port = '8889';

$conn = new PDO("mysql:host=$hostname;dbname=$dbname;port=$port", $username, $password);

$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare('SELECT answers FROM table_name');

$stmt->execute();

$results = $stmt->fetch();

echo $results[0][1];

Это возвращает 'm', а не всю строку. Я пытался использовать fetchAll, fetchColumn, fetch (PDO: FETCH_COLUMN) для похожих результатов. Есть идеи, что я могу делать не так?

1 Ответ

0 голосов
/ 27 апреля 2018

Вы перебираете массивы на один шаг в

echo $results[0][1];

Когда вы вызываете fetch(), это возвращает массив значений из единственной строки выбора, так что в вашем случае, когда вы выбираете только answers, это будет означать, что $results[0] будет содержать значение в столбец answers. Когда вы используете $results[0][1], вы говорите, чтобы получить второй символ строки в $results[0] (так как это строка [] относится к каждому символу, как если бы строка была массивом).

Если вы пишете вместо

echo $results[0];

Вы должны получить полный столбец.

Если вы используете fetchAll() - это должно дать вам результаты после того, как он возвращает массив всех строк. Но, так как массивы основаны на 0, вы должны использовать

echo $results[0][0];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...