无法连接到 localhost mysql 数据库

Posted

技术标签:

【中文标题】无法连接到 localhost mysql 数据库【英文标题】:Can't connect to localhost mysql database 【发布时间】:2016-12-13 10:57:36 【问题描述】:

我正在尝试制作一个可以存储在 mysql 数据库中的简单表单。每当我尝试连接时,它都不会让我。这是我所拥有的:

php

<?php

define('DB_NAME', 'forms1');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) 
    die('Could not connect: ' . mysqli_error());


$db_selected = mysqli_select_db(DB_NAME, $link);

if (!$db_selected) 
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());


$value = $_POST['input1'];
$value2 = $_POST['input2'];

$sql = "INSERT INTO demo (input1, input2) VALUES ('$value', '$value2')";

if (!mysqli_query($sql)) 
    die('Error: ' . mysqli_error());


mysqli_close();
?>

html

<form action="demo.php" method="post" />
<p>Input 1: <input type="text" name="input1" /></p>
<p>Input 2: <input type="text" name="input2" /></p>
<input type="submit" value="Submit" />
</form>

我的凭据正确,但是当我打开我的页面时,它说“不能使用 forms1:”

甚至没有给我错误。

【问题讨论】:

【参考方案1】:

如果您将连接变量添加到对mysqli_error()的调用中,它将给您一条错误消息

if (!$db_selected) 
    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error($link));

这适用于对mysqli_error($link)的所有调用

PHP MYSQLI Manual

这个错误应该产生了一个 PHP 错误,所以如果你没有看到我假设你是在一个关闭了错误报告的 LIVE 服务器上开发的。在这种情况下,您应该像这样启动所有脚本

<?php
error_reporting(E_ALL); 
ini_set('display_errors', 1);

这将确保您在浏览器上看到这些错误!调试脚本后,您可能应该删除这些行,因为您不希望用户在实时站点出现问题时看到此信息

连接也应该包含数据库名称,

<?php

define('DB_NAME', 'forms1');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_HOST', 'localhost');

$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);

if (!$link) 
    die('Could not connect: ' . mysqli_error());


//$db_selected = mysqli_select_db(DB_NAME, $link);
//if (!$db_selected) 
//    die('Can\'t use ' . DB_NAME . ': ' . mysqli_error());
//

mysqli_select_db() 调用在那里,因此如果您出于某种原因使用 2 个数据库,则可以在同一连接上更改为另一个数据库。

我假设您正在从 mysql_ API 转换为 mysqli_ API,不幸的是,转换不是一对一的转换。

【讨论】:

谢谢,我已经应用了所有修复程序,现在它只显示 1 个错误:“警告:mysqli_select_db() 期望参数 1 为 mysqli,字符串在 D:\MAMP\htdocs\basic\ demo.php 在第 16 行"。这是第 16 行:“$db_selected = mysqli_select_db(DB_NAME, $link);”。它不认为 $link 是 mysqli 吗? 您不需要mysqli_select_db(),因为数据库现在在mysqli_connect() 中提到了这就是我将其注释掉的原因 啊,明白了。无论如何,无论有没有它,我都可以通过它,但是无论如何它都会给我一个新错误:“警告:mysqli_query() 需要至少 2 个参数,1 在 D:\MAMP\htdocs\basic\demo.php 中给出在线27"。第 27 行是“if (!mysqli_query($sql)) ”。 Ken 请阅读手册。 mysqli_* 函数不是旧的 mysql_* 函数。

以上是关于无法连接到 localhost mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法使用php连接错误连接到mysql:无法连接到'localhost'(10061)上的MySQL服务器[重复]

Rails 开发 - 无法连接到“localhost”上的 MySQL 服务器 (10061)

无法连接到 localhost mysql 数据库

无法使用 mysql-connector-python 连接到 localhost,错误 1130

似乎无法连接到 mysql、localhost?

安装后无法连接到“localhost”(10061)上的 MySQL 服务器