Функция popList()
принимает два параметра – имя столбца и имя таблицы. В основном popList(
) подключается к серверу mysql
а затем к базе данных и строит SQL-запрос для извлечения данных на основе того, что вы передали функции, которая будет использоваться для заполнения списка на странице.
Только один список отлично работает с этой функцией, но если на странице есть второй список, который вызывает функцию снова с разными параметрами (имя столбца и имя таблицы), он выглядит пустым, и в источнике страницы, источник первого заполненного списка:
Предупреждение : mysql_connect () [function.mysql-connect]: доступ запрещен для пользователя «ODBC» @ «localhost» (с использованием пароля: нет) в C: \ xampp \ htdocs \ test в строке 7
Не подключено: доступ запрещен для пользователя «ODBC» @ «localhost» (с использованием пароля: НЕТ)
Я использую те же учетные данные подключения в обоих вызовах, которые являются локальным хостом по умолчанию, root и без пароля (исключительно для целей тестирования)
Почему это так?
EDIT * (источник) *:
<?php function popList($col, $tbl) { require_once "credentials.php"; // Opens a connection to a MySQL server $connection=mysql_connect($host, $username, $password); if (!$connection) { die('Not connected : ' . mysql_error()); } // Set the active MySQL database $db_selected = mysql_select_db($database, $connection); if (!$db_selected) { die ('Can\'t use db : ' . mysql_error()); } $sql = "SELECT $field FROM $table"; $query = mysql_query($sql); while ($row = mysql_fetch_array($query)) { echo '<option value="' . $row["$field"] . '">' . $row["$field"] . '</option>'; } mysql_close($connection); } ?>
РЕШЕНИЕ :
NEW : Похоже, что использование require_once
и include_once
вызывает проблему, но использование include
или require
действительно устраняет проблему.
Заменил : require_once "credentials.php"
фактическим кодом из credentials.php
следующим образом
function popList(...) { require "credentials.php"; // changed to require from require_once. same with include ... }