【发布时间】:2015-06-08 14:21:51
【问题描述】:
我遇到了一个 PHP 问题。我在网上搜索过,但找不到答案。到目前为止,这是我的代码:
<?php
$db_host = 'db_host';
$db_user = 'db_user';
$db_password = 'db_password';
$db_name = 'db_name';
//not showing you the real db login ofcourse
$conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
if($conn) {
echo 'We are connected!';
}
到这里,一切顺利。连接已建立,“我们已连接!”出现在屏幕上。
function login($username, $password, $conn) {
$result = $conn->query("SELECT * FROM users");
echo mysqli_errno($conn) . mysqli_error($conn);
}
但是,当我运行此函数时,会弹出 mysqli 错误“未选择数据库”。于是我在函数前和函数中的文件中添加了如下代码,所以总的代码变成了:
<?php
$db_host = 'db_host';
$db_user = 'db_user';
$db_password = 'db_password';
$db_name = 'db_name';
//not showing you the real db login ofcourse
$conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
if($conn) {
echo 'We are connected!';
}
if (!mysqli_select_db($conn, $db_name)) {
die("1st time failed");
}
function login($username, $password, $conn, $db_name) {
if (!mysqli_select_db($conn, $db_name)) {
die("2nd time failed");
}
$result = $conn->query("SELECT * FROM users");
echo mysqli_errno($conn) . mysqli_error($conn);
}
$username = 'test';
$password = 'test';
login($username, $password, $conn, $db_name);
?>
第一次添加数据库名称可以正常工作,但是在函数中它不起作用。我也尝试在函数内部使用 global $conn ,但这也不起作用。将 mysqli_connect() 更改为 new mysqli() 也没有任何效果。
提前致谢!
【问题讨论】:
-
这是您的实际代码吗? $db_name 从未被分配。
-
重复
select_db是没有意义的,除非你真的在使用多个不同的数据库。选择数据库后,它会在连接的整个生命周期内保持选中状态。 -
$db_host、$db_user、$db_password 和 $db_name 在此代码上方定义。如前所述,连接已完美建立,但之后它停止运行。
-
但奇怪的是mysqli_select_db在函数内部不起作用对吧?
-
您是否将正确的数据库名称作为参数传递给登录函数?尝试查看值是什么