Вставка результатов MYSQL из PHP в массив Javascript

Я пытаюсь сделать очень простую функцию автозаполнения на частном веб-сайте, используя trie в javascript. Проблема – это примеры, которые я видел и пытаюсь использовать только предопределенный список в массиве javascript.

например. var arrayObjects = ["Dog","Cat","House","Mouse"];

То, что я хочу сделать, это получить результаты MYSQL с помощью PHP и поместить их в массив javascript.

Это то, что у меня есть до сих пор для PHP (Javascript просто нужно заполнить массив):

 <?php $mysqli = new mysqli('SERVER', 'U/NAME', 'P/WORD', 'DB'); if (!$mysqli) { die('Could not connect: ' . mysqli_error($mysqli)); } if ($stmt = $mysqli->prepare("SELECT category.name FROM category")) { $stmt->bind_result($name); $OK = $stmt->execute(); } while($stmt->fetch()) { printf("%s, ", $name); } ?> в <?php $mysqli = new mysqli('SERVER', 'U/NAME', 'P/WORD', 'DB'); if (!$mysqli) { die('Could not connect: ' . mysqli_error($mysqli)); } if ($stmt = $mysqli->prepare("SELECT category.name FROM category")) { $stmt->bind_result($name); $OK = $stmt->execute(); } while($stmt->fetch()) { printf("%s, ", $name); } ?> 

Затем я хочу вставить по существу каждое значение, используя что-то вроде mysql_fetch_array ($ name); (Я знаю, что это неверно, но просто чтобы показать вам, ребята, что происходит в моей голове)

 <script> -- this is the javascript part (function() { <?php while $stmt=mysql_fetch_array($name)) { ?> var arrayObjects = [<?php stmt($name) ?>]; <?php } ?> 

Я могу получить результаты, откликающиеся хорошо, я могу манипулировать trie fine без результатов MYSQL, я просто не могу их собрать, любая помощь будет очень признательна, и если я пойду совершенно неправильно, сообщите мне об этом.

Благодаря,

Адам

Solutions Collecting From Web of "Вставка результатов MYSQL из PHP в массив Javascript"

Во-первых, существует очень большая разница между java и javascript 🙂 Теперь, в этом случае, то, что вы делаете, – это цикл вашего массива результатов и каждый раз, когда вы печатаете строку var arrayObjects = [<?php stmt($name) ?>]; , Однако это не конвертирует между полученным вами массивом PHP и массивом javascript.

Поскольку вы начали делать это таким образом, вы можете:

 <?php //bind to $name if ($stmt = $mysqli->prepare("SELECT category.name FROM category")) { $stmt->bind_result($name); $OK = $stmt->execute(); } //put all of the resulting names into a PHP array $result_array = Array(); while($stmt->fetch()) { $result_array[] = $name; } //convert the PHP array into JSON format, so it works with javascript $json_array = json_encode($result_array); ?> <script> //now put it into the javascript var arrayObjects = <?php echo $json_array; ?> </script> 

Используйте json_encode чтобы превратить ваш PHP-массив в действительный объект javascript. Например, если вы получили результаты из своей базы данных в массиве php с именем $array :

 var obj = "<?php echo json_encode($array); ?>"; 

Теперь вы можете использовать obj в своем javascript-коде

Для автоматического завершения вы можете использовать <datalist> . Это относительно новая функция в HTML5 ( см. Таблицу поддержки ), но существует полипол . Заполните теги <option> в php при создании страницы, и вы закончите.