関数popList()
は、列の名前とテーブルの名前の2つのパラメーターを取ります。基本的に、popList(
)関数はmysql
サーバーに接続してからデータベースに接続し、SQLクエリを作成して、ページのリストボックスに入力するために使用する関数に渡した内容に基づいてデータを取得します。
関数で正常に機能するリストボックスは1つだけですが、異なるパラメーター(列名とテーブル名)を渡して関数を再度呼び出す2番目のリストボックスがある場合、空のように見え、ページのソースのすぐ下に次のように出力されます。最初に入力されたリストボックスのソース:
警告:mysql_connect()[function.mysql-connect]: 7行目のC:\ xampp \ htdocs \testでユーザー'ODBC'@'localhost'(パスワード:NOを使用)のアクセスが拒否されました接続されていません:ユーザー'のアクセスが拒否されましたODBC'@' localhost'(パスワードを使用:NO)
デフォルトのlocalhost、root、パスワードなしの両方の呼び出しで同じ接続クレデンシャルを使用します(純粋にテスト目的で)
なんでこんなふうに振る舞うの?
編集*(ソース)*:
<?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
...
}