Php 函数从数据库表填充第一个列表框,但不填充第二个列表框
函数Php 函数从数据库表填充第一个列表框,但不填充第二个列表框,php,mysql,html,Php,Mysql,Html,函数popList()接受两个参数—列名和表名。 基本上,popList()函数连接到一个mysql服务器,然后连接到一个数据库,并构建一个sql查询,根据传递给函数的内容检索数据,以用于填充页面上的列表框 只有一个listbox可以与函数配合使用,但如果页面上有第二个listbox使用传递的不同参数(列名和表名)再次调用函数,则该listbox将显示为空,并在页面源中第一个填充的listbox的源下打印以下内容: 警告:mysql_connect()[function.mysql connec
popList()
接受两个参数—列名和表名。
基本上,popList(
)函数连接到一个mysql
服务器,然后连接到一个数据库,并构建一个sql查询,根据传递给函数的内容检索数据,以用于填充页面上的列表框
只有一个listbox可以与函数配合使用,但如果页面上有第二个listbox使用传递的不同参数(列名和表名)再次调用函数,则该listbox将显示为空,并在页面源中第一个填充的listbox的源下打印以下内容:
警告:mysql_connect()[function.mysql connect]:访问
中的用户“ODBC”@“localhost”(使用密码:否)被拒绝
第7行的C:\xampp\htdocs\test未连接:
拒绝访问用户“ODBC”@“localhost”(使用密码:否)
我在两个调用中使用相同的连接凭据,它们是默认的localhost、root和no password(纯粹用于测试目的)
为什么会这样
编辑*(来源)*:
引用你的话,
我在两个调用中使用相同的连接凭据,它们是默认的localhost、root和no password(纯粹用于测试目的)
由于您提到的根用户没有密码,在错误中,它是:拒绝访问用户“ODBC”@“localhost”(使用密码:否)
,这意味着您实际上是在尝试连接没有密码的用户ODBC
,我认为这是有密码的。引用您的话
我在两个调用中使用相同的连接凭据,它们是默认的localhost、root和no password(纯粹用于测试目的)
由于您提到的根用户没有密码,在错误中,它是:
拒绝用户“ODBC”@“localhost”(使用密码:否)
,这意味着您实际上是在尝试连接没有密码的用户ODBC
,我认为这是一个密码。require\u once按照它所说的做:它需要一次。第一次调用popList
时,credentials.php
中的所有内容都会转储到函数的作用域中。第二次调用popList
时,不会发生任何事情,因为在此运行期间已需要一次credentials.php
您应该在某个地方有一个配置对象,而不是在一个文件中有一堆变量,您不应该在这样的函数中使用
require
或include
,您应该启用E\u STRICT
,这样您将看到关于未定义$password
等的警告。要求一次
按其说明执行:要求一次。第一次调用popList
时,credentials.php
中的所有内容都会转储到函数的作用域中。第二次调用popList
时,不会发生任何事情,因为在此运行期间已需要一次credentials.php
您应该在某个地方有一个配置对象,而不是在一个文件中有一堆变量,您不应该在这样的函数中使用
require
或include
,您应该启用E\u STRICT
,这样您将看到关于未定义$password
等的警告。您好,您可以这样做
$query="SELECT * FROM bus_type order by bus_type_id Asc";
$result = mysqli_query($conn, $query);
echo "<select name=bustype size=sizes class=bus_txtbox value=''>Type of the Bus</option>";
while($line=mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo "<option value=$line[bus_type_id]>$line[bus_type]</option>";
}
echo "</select>";
$query=“按总线类型id Asc从总线类型订单中选择*”;
$result=mysqli\u查询($conn,$query);
回显“总线类型”;
而($line=mysqli\u fetch\u数组($result,mysqli\u ASSOC)){
回显“$line[总线类型]”;
}
回声“;
您好,您可以这样做
$query="SELECT * FROM bus_type order by bus_type_id Asc";
$result = mysqli_query($conn, $query);
echo "<select name=bustype size=sizes class=bus_txtbox value=''>Type of the Bus</option>";
while($line=mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo "<option value=$line[bus_type_id]>$line[bus_type]</option>";
}
echo "</select>";
$query=“按总线类型id Asc从总线类型订单中选择*”;
$result=mysqli\u查询($conn,$query);
回显“总线类型”;
而($line=mysqli\u fetch\u数组($result,mysqli\u ASSOC)){
回显“$line[总线类型]”;
}
回声“;
我们可能需要查看代码…它看起来很像是在函数调用之间更改了$username
;也许在代码的其余部分搜索该变量的引用?没有办法。credentials.php只有用户名的根,该函数在这两种情况下都使用它。为什么在第一次调用后它会将root更改为ODBC?也许我在第二次调用函数时已经连接好了?不过,我会在PHP脚本和所有包含的文件中搜索对$username
的所有引用,以查看哪些行能够更改其值。然后回溯,看看这些行是否正在执行。另一方面,您可以始终强制$username=“root”代码>就在您第二次调用popList()
函数之前-但是如果不深入了解它是如何被更改的,您可能会在这个过程中破坏其他东西。嗯,奇怪。我想这与函数定义的require\u once
部分有关。我刚刚将credentials.php
中的连接凭据粘贴到函数的顶部,现在就可以使用了。两个列表框都会被填充。可能是require once“credentials.php”
导致了这种行为。我不知道为什么。我们可能需要查看代码…它看起来很像是在函数调用之间更改了$username
;也许在代码的其余部分搜索该变量的引用?没有办法。credentials.php只有用户名的根,该函数在这两种情况下都使用它。为什么在第一次调用后它会将root更改为ODBC?也许我在第二次调用函数时已经连接好了?不过,我会在PHP脚本和所有包含的文件中搜索对$username
的所有引用,以查看哪些行能够更改其值。然后回溯,看看这些行是否正在执行。另一方面,你可以
$query="SELECT * FROM bus_type order by bus_type_id Asc";
$result = mysqli_query($conn, $query);
echo "<select name=bustype size=sizes class=bus_txtbox value=''>Type of the Bus</option>";
while($line=mysqli_fetch_array($result, MYSQLI_ASSOC)){
echo "<option value=$line[bus_type_id]>$line[bus_type]</option>";
}
echo "</select>";