2013-06-29 2 views
0

Я пытаюсь получить список элементов из db mySQL и вставить их в список в выбранном объекте на веб-странице. Ниже приведена часть кода, который не работает.Извлечение списка элементов с помощью php

В первой строке я пытаюсь получить объект JSON из публичной функции, называемой getBrands(), в одноэлементном объекте, который я создал под названием DatabaseInterface.

Вторая строка затем пытается превратить этот объект JSON в массив php.

Наконец, я запускаю цикл, который может выбирать каждый элемент между тегами для веб-страницы.

Куда я иду не так?

<?php 

var $brandArrayJSON = DatabaseInterface::getBrands(); 
$brandArray = JSON_decode($brandArrayJSON); 

for ($loop=0; $loop < sizeof($brandArray); $loop++) { 
    echo "<option>$brandArray[$loop]</option>"; 
} 

?> 

EDIT: В случае, если это помогает, вот мой синтаксис DatabaseInterface. Я включил этот файл в верхней части моего PHP файла

class databaseInterface { 

private static $_instance; 

// Private constructor prevents instantiation 
private function __construct() { 
} 

public static function getInstance() { 
    if (!self::$_instance) { 
     self::$_instance = mysqli_connect(self::databaseHost, self::databaseUsername, self::databasePassword, self::databaseName); 
     if (mysqli_connect_errno(self::$_instance)) { 
      throw new Exception("Failed to connect to MySQL:" . mysqli_connect_error()); 
     } 
    } 
    return self::$_instance; 
} 

public function getBrands() { 

    try { 
     $con = DatabaseInterface::getInstance(); 
    } catch (Exception $e) { 
     // Handle exception 
     echo $e->getMessage(); 
    } 

    $query = "SELECT psBrandName from brands"; 
    $result = mysqli_query($con, $query) or die ("Couldn't execute query. ".mysqli_error($con)); 

    $resultArray[] = array(); 

    while ($row = mysqli_fetch_assoc($result)) { 

     extract($row); 
     $resultArray[] = $psBrandName; 

    } 

    return json_Encode($resultArray); 

} 
+1

Как выглядит ваш сгенерированный JSON? –

+1

Какова конкретная проблема, как она «не работает»? –

+0

Проблема заключается в том, что при запуске скрипта он приводит к сбоям, в результате чего веб-страница не загружается. Объект JSON - это просто список значений (брендов) без ключей. –

ответ

0

Там нет ничего «плохого» с кодом, в том, что он должен работать (при условии, ничего не сломано на запросе стороне). Однако есть несколько вещей, которые необходимо улучшить.

Во-первых, в основном то, что метод getBrands() делает это эквивалентно следующему:

$brandArray = json_encode(array('test','test2','test3')); 
echo $brandArray; // returns ["test","test2","test3"] 

Теперь, когда вы расшифровать, что вы получите то же самое, вы изначально положить в (массив):

$brandArray = json_decode('["test","test2","test3"]'); 
var_dump($brandArray); // Will dump an array 

Поскольку это массив (не объект PHP), вы можете просто использовать foreach.

foreach($brandArray as $option) { 
    echo '<option>', $option, '</option>'; 
} 

Если вы беспокоитесь о том, что является объектом в некоторых случаях (возможно, вы имели не-массив JS объект, который будет в основном эквивалентна ассоциативный массив PHP), можно привести результат json_decode в массив.

$brandArray = (array)$brandArray; 

Теперь в методе getBrands(), я настоятельно рекомендовал бы просто использовать $row['psBrandName'] вместо захламление вещи с extract, если у вас есть действительно веские причины, чтобы сделать это.

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