Php mysqli_连接不工作
我安装了apache、php和mysql。现在,当我执行php代码时,Php mysqli_连接不工作,php,mysql,Php,Mysql,我安装了apache、php和mysql。现在,当我执行php代码时,mysqli\u connect()没有工作,也没有在die中显示消息 $dbc=mysqli_connect(' ', ' ', ' ', ' ') or die('not connecting'); 现在有人告诉我应该传递给mysqli\u connect的数据库用户名和密码。我不记得有人问我用户名或密码 为什么die()中的消息没有显示出来 Myvar_dump(函数_存在('mysqli_connect'))输出布尔
mysqli\u connect()
没有工作,也没有在die中显示消息
$dbc=mysqli_connect(' ', ' ', ' ', ' ') or die('not connecting');
现在有人告诉我应该传递给mysqli\u connect
的数据库用户名和密码。我不记得有人问我用户名或密码
为什么die()
中的消息没有显示出来
My
var_dump(函数_存在('mysqli_connect'))代码>输出布尔值(错误)。。如果与此有关,我如何更正它?您是否有错误报告(E\u ALL)代码>和ini\u集('display\u errors',1)代码>
问题可能在其他地方
另外,如果它没有在Die()
中撬动消息,您如何知道它失败了?看起来MySQLi扩展没有安装。什么是var_转储(函数_存在('mysqli_connect'))代码>输出?如果没有传递任何值,我认为MySQL来自设置ini。因此,如果传递空值,可能也会发生这种情况。在这种情况下,实际上可以建立连接,并且结果不会“消失”。最好的方法是在调用后使用var_dump
检查$dbc
包含的内容,然后从那里继续
但无论如何,如果您不记得,PHP将告诉您要使用哪些设置,这是不可能的 如果您刚刚安装了mysql,那么只有root
用户,没有密码(如果您愿意,也可以是空白密码)。强烈建议您更改该密码,并为您的应用程序创建一个新用户和密码,该用户和密码只能访问您的应用程序使用的一个数据库
要更改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';
显然,用正确的值更改所有的值
由于die()
没有执行的原因,请按照@yes123和@binaryLV所说的去做(我认为两者都是对的,mysqli
没有安装,因此调用mysqli\u connect(…)
时会抛出一个E\u致命错误
,并且错误报告被禁用(或者可能显示错误,或者两者都有),您看不到该错误。尝试以下操作:
$dbc = @ mysql_connect('localhost', 'root', '') or exit('Not connecting.');
对于主机,如果您使用的是“localhost:8889”,
尝试使用“localhost”,并在mysqli_connect()中,将“8889”(或您正在使用的任何端口)作为其他参数后的参数
为我工作
例如:
//1创建数据库连接
$con=mysqli\u connect(DB\u服务器、DB\u用户、DB\u密码);
如果(!$con){
die('mysqli连接失败:'.mysql_error());
}
//2连接数据库
$db\u select=mysqli\u select\u db($con,db\u NAME);
如果(!$db\u选择){
die('数据库选择失败:'.mysql_error());
}
//3创建查询
$result=mysqli_查询($con,“从主题中选择*);
如果(!$result){
die('查询未成功:'.mysql_error());
}
//4使用返回的数据
while($row=mysqli\u fetch\u数组($result)){
echo$row['menu_name']。“$row['position']。”
”;
}
//5密切联系。。。
if(isset($con)){
mysqli_close($con);
}
如果您有任何疑问,请运行此代码,然后随时询问我。
首先检查您的php版本
echo“当前PHP版本:”.phpversion();退出;
如果高于5.5,甚至不起作用
然后在php文件phpinfo(INFO_MODULES)中编写脚本;退出;
它显示了所有关于php的信息,并检查是否列出了Mysqli。如果没有,请通知我们的服务器管理员,或者如果您有访问权限,请转到phpini文件并启用Mysqli(从中删除分号)将进行检查。我的数据库用户名是什么?@Karan:我不是魔术师。:)。无论如何,默认值是root,没有密码。我的意思是,在安装mysql时,我没有被要求输入任何用户名,但我输入了密码,所以我如何知道在mysqli_connect函数中要传递什么用户名?不要以root身份连接!创建一个新用户名,该用户名只对一个数据库具有权限。如果使用root用户连接数据库,是否存在任何漏洞应用程序中被利用的漏洞可能会授予攻击者对数据库的root访问权限,这意味着您的所有数据库都将被暴露。如果您使用的新用户只能访问一个数据库,则只会暴露该数据库(是的,它也很烂,但规模很小)请尝试“root”
作为用户名,或者null
作为密码,或者您输入的内容(您在注释中输入了一些密码)。然后,在调用mysqli\u connect()时,您实际上会遇到致命错误
,因为该函数不存在。如果它是Windows server,请找到php.ini
文件并取消对extension=php\u mysqli.dll
行的注释,然后重新启动Apache。这将启用mysqli扩展。有关启用/安装mysqli@@binaryLV的详细信息我尝试了它,删除了extensio=php\u mysqli.dll前面的;但是如果使用PHP 5.0、5.1、5.2,则显示为bool(false),然后在文档中写入libmysql.dll
文件(包含在PHP发行版中)必须在Windows系统的PATH环境变量中可用。将该文件复制到安装apache的目录也可能有效(在这种情况下,没有必要修改PATH环境变量)。@binaryLV我爱你。节省的小时数(1)永远不要使用(或建议使用)@
!这是调试时最糟糕的事情。(2)mysql\u*
与mysqli\u*
不兼容。
mysqli_connect('localhost','root','root','dbname','8889');
//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.