函数popList()
有两个参数——列名和表名。基本上popList(
) 函数连接到mysql
服务器,然后连接到数据库,并构建一个 sql 查询,以根据您传递给函数的内容来检索数据,以用于填充页面上的列表框。
只有一个列表框适用于该函数,但如果页面上有第二个列表框使用不同的参数(列名和表名)再次调用该函数,则它显示为空,并且以下内容打印在页面的源代码中第一个填充列表框的来源:
警告:mysql_connect() [function.mysql-connect]:第7行C:\xampp\htdocs\test中的用户 'ODBC'@'localhost' 的访问被拒绝(使用密码:否) 未连接:用户的访问被拒绝ODBC'@'localhost'(使用密码:否)
我在两个调用中使用相同的连接凭据,它们是默认的 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);
}
?>
解决方案:
新:似乎使用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
...
}