我安装了apache,php和mysql。现在,当我执行php代码时,mysqli_connect()
无法正常工作,它也没有显示消息。
$dbc=mysqli_connect(' ', ' ', ' ', ' ') or die('not connecting');
现在有人告诉我要将哪个数据库用户名传递给mysqli_connect
以及密码是什么。我不记得我被要求提供任何用户名或密码
为什么die()
中的消息不出现?
我的var_dump(function_exists('mysqli_connect'));
输出bool(false)..如果它与它有关,我该如何纠正呢?
答案 0 :(得分:14)
看起来没有安装MySQLi扩展。 var_dump(function_exists('mysqli_connect'));
输出了什么?
答案 1 :(得分:4)
您有error_reporting(E_ALL);
和ini_set('display_errors',1);
吗?
问题可能出在其他地方。
如果它没有在Die()
中引用该消息,您怎么知道它失败?
答案 2 :(得分:2)
对于主机,如果您使用的是“localhost:8889”, 尝试使用“localhost”,并在mysqli_connect()中放入'8889'(或者你正在使用的任何端口)作为其他争论之后的参数。
为我工作。
例如:
mysqli_connect('localhost','root','root','dbname','8889');
答案 3 :(得分:0)
如果你没有传递任何值,我认为MySQL是设置ini中的using defaults。所以如果你传递空值,也许这也会发生。在这种情况下,实际上可以建立连接,结果不会“死”。最好的办法是使用var_dump
检查通话后$dbc
包含的内容并从那里继续。
但无论如何,如果你不记得它们,PHP就无法告诉你使用哪些设置。 :)
答案 4 :(得分:0)
如果您刚安装了mysql,那么只有root
用户,没有密码(如果您愿意,则为空白密码)。强烈建议您更改密码 AND 为您的应用程序创建一个新用户和密码,该用户和密码只能访问一个数据库,即您的应用程序使用的数据库。
要更改root
密码,您可以执行以下操作:
$ mysql -u root -p
Enter password: [press enter]
mysql> use mysql;
mysql> UPDATE user SET `password`=PASSWORD('your_desired_password') WHERE username='root';
# this next bit is to create a database and a username for your web application
mysql> CREATE DATABASE your_application_name;
mysql> GRANT ALL ON your_application_name.* TO 'your_username'@'localhost' IDENTIFIED BY 'yourpassword';
显然用正确的值更改所有your_*
值。
由于die()
未执行的原因,请执行@ yes123和@binaryLV所说的内容(我认为两者都是正确的,mysqli
未安装,因此它会抛出{{1}在调用E_FATAL_ERROR
并且mysqli_connect(...)
被禁用(或者可能是error_reporting
,或者两者都有)时,您没有看到该错误。
答案 5 :(得分:0)
//1 create a data base connection
$con = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD);
if (!$con) {
die('mysqli connection failed: ' . mysql_error() );
}
//2 connect with a data base
$db_select = mysqli_select_db($con , DB_NAME);
if (!$db_select) {
die('data base selection failed: ' . mysql_error() );
}
//3 create query
$result = mysqli_query($con, "select * from subjects");
if (!$result) {
die('query not successed: ' . mysql_error() );
}
//4 use the returned data
while ($row = mysqli_fetch_array($result)) {
echo $row['menu_name'] . " " . $row['position'] . "<br>" ;
}
//5 close connection...
if (isset($con)) {
mysqli_close($con);
}
Run this code if you have any query then feel free to ask me.
答案 6 :(得分:0)
首先检查你的php版本 echo&#39;当前PHP版本:&#39; 。 phpversion();出口; 如果它高于5.5甚至不工作 然后在你的php文件phpinfo(INFO_MODULES)中写脚本;退出; 它显示所有关于PHP和检查Mysqli列出与否。如果没有,那么通知我们的服务器admministrator或如果你有权访问然后转到phpini文件并启用mysqli(从中删除分号)
答案 7 :(得分:-1)
试试这个:
$dbc = @ mysql_connect('localhost', 'root', '') or exit('Not connecting.');