2016-07-07 2 views
0

У меня возникла проблема с моим подготовленным массивом результатов SELECT, не содержащим фактических значений столбца. Я знаю, как получить данные из базы данных sql с помощью Java, однако у меня возникают проблемы с PHP PDO. Я подключен к удаленной базе данных AWS, которая, как я знаю, работает. Вот код:PHP PDO MySQL массив возвращает только имена столбцов

 $conn = new PDO($dsn, $username, $password); 
     //echo "Test"; 

Здесь я хочу, чтобы получить все данные столбца

 $sth = $conn->prepare("SELECT 'id', 'short-des', 'full-des', 'image-urls', 'date-created' FROM projects"); 
     $sth->execute(); 

Я поместил PDO :: FETCH_BOTH, PDO :: FETCH_ASSOC, PDO :: FETCH_COLUMN. Результат в конце этого сообщения является результатом того, что я оставляю пробел fetchall() пустым. Когда я вставляю какой-либо из PDO :: styles, значения не возвращаются. Я выполнил другие сценарии, такие как использование var_dump вместе со стилями в заявлении выборки, которые предоставляют фактические результаты, но нет фактических значений, которые содержат столбцы.

 $row = $sth->fetchAll(); 

     echo "<br>" . $row[0] . "<br>"; 
     echo "<br>" . $row[1] . "<br>"; 

     $column1 = $row[0]; 
     $column2 = $row[1]; 

     for($i = 0; $i < 5; $i++){ 
      echo " " . $column1[$i]; 
      $var = $column1[$i]; 
      echo " = " . $var . " , "; 

     } 
     for($i = 0; $i < 5; $i++){ 
      echo " " . $column2[$i]; 
      $var = $column2[$i]; 
      echo " = " . $var . " , "; 
     } 

Это полученный текст:

64-bitPDO доступна

Массив

Массива ID = идентификатор, короткий дез = короткий дез, полный дез = full-des, image-urls = image-urls, date-created = date-created, id = id, short-des = short-des, full-des = full-des, image-urls = image-urls, date -created = создание даты, успешно подключено

Я угадываю его какую-то тупо простую причину, что он не показывает фактические значения. Я не знаком с концепцией «выборки», так как я прихожу из JDBC, однако я провел последние несколько дней, пытаясь заставить его работать безрезультатно. Я просмотрел похожие сообщения, такие как this post и this post, и this post. Кажется, что они обрабатывают несколько разные проблемы. К сожалению, я хочу использовать подготовленный оператор вместо фактического запроса.

ответ

1

Я считаю, что проблема заключается в ваших одиночных кавычках. Попробуйте это:

$sth = $conn->prepare("SELECT `id`, `short-des`, `full-des`, `image-urls`, `date-created` FROM projects"); 

Примечание: ` обратные кавычки не являются такими же, как одинарные кавычки '.

+0

К сожалению, это не решит проблему. Я использовал одинарные кавычки, потому что видел где-то, что вы можете использовать их, если имена столбцов содержат ключевые фразы. Слово «заполнять» и «дата» подсвечивается. $ sth = $ conn-> prepare ("SELECT id, short-des, full-des, image-urls, созданные по дате из проектов"); –

+0

@JosiahL. Что делает 'var_dump ($ row);' output с этим изменением? Фактически, вы используете обратный ход 'not '. Попробуйте это с помощью backtick now. – imtheman

+0

Он ничего не выводит. Однако это то, что он выводит с одинарными кавычками: array (2) {[0] => array (10) {["id"] => string (2) "id" [0] => string (2) " id "[" short-des "] => string (9)" short-des "[1] => string (9)" short-des "[" full-des "] => string (8)" full- des "[2] => string (8)" full-des "[" image-urls "] => string (10)" image-urls "[3] => string (10)" image-urls "[" (12) «date-created» [4] => string (12) «date-created»} [1] => array (10) {["id"] => string (12) 2) «id» [0] => строка (2) «id» [«short-des»] => строка (9) «short-des» [1] => строка (9) «short-des» [ "full-des"] => string (8) –

Смежные вопросы