无法连接到本地主机 mysql 数据库
Can't connect to localhost mysql database
我正在尝试制作一个可以存储在 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>
我的凭据是正确的,但是当我打开我的页面时,它会这样说,"Can't use forms1:"
连错误都不给我。
如果您将连接变量添加到对 mysqli_error()
的调用中,它会给您一个错误消息
if (!$db_selected) {
die('Can\'t use ' . DB_NAME . ': ' . mysqli_error($link));
}
这适用于对 mysqli_error($link)
的所有调用
这个错误应该会产生一个 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 个数据库,则可以在同一连接上切换到另一个数据库。
I assume you are converting from the mysql_
API to mysqli_
API unfortunately the convertion is not a one to one conversion.
我正在尝试制作一个可以存储在 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>
我的凭据是正确的,但是当我打开我的页面时,它会这样说,"Can't use forms1:"
连错误都不给我。
如果您将连接变量添加到对 mysqli_error()
if (!$db_selected) {
die('Can\'t use ' . DB_NAME . ': ' . mysqli_error($link));
}
这适用于对 mysqli_error($link)
这个错误应该会产生一个 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 个数据库,则可以在同一连接上切换到另一个数据库。
I assume you are converting from the
mysql_
API tomysqli_
API unfortunately the convertion is not a one to one conversion.