数据库没有连接

时间:2015-10-28 19:11:29

标签: php mysqli

我无法连接到我的数据库。在这里,我的代码可以帮助我。

<?php

error_reporting(E_ALL); 
ini_set('display_errors', 1);

define('DB_HOST', 'mysql.hostinger.in');
define('DB_NAME', 'u25*****41_hari');
define('DB_USERNAME', 'u25*****41_hari');
define('DB_PASSWORD', 'hariharan');

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

if (!$link) {
     die('Could not connect line 9');
}

$DB_SELECT = mysqli_select_db(DB_NAME, $link);

if (!$DB_SELECT) {
        die('Could not connect line 15');
}

$valueone = $_POST['Name'];
$valuetwo = $_POST['Username'];
$valuethree = $_POST['Password'];
$valuefour = $_POST['Mobile_Number'];

$sqlone = "INSERT INTO Account (Name) VALUES ('$valueone')";
$sqltwo = "INSERT INTO Account (Username) VALUES ('$valuetwo')";
$sqlthree = "INSERT INTO Account (Password) VALUES ('$valuethree')";
$sqlfour = "INSERT INTO Account (Mobile_Number) VALUES ('$valuefour')";

if (!mysql_query($sqlone) || !mysql_query($sqltwo) || !mysql_query($sqlthree) || !mysql_query($sqlfour) || !mysql_query($sqlfive)) {
     die('Could not connect name line 33');
}


mysql_close();
?>

这是我得到的错误:

  

警告:mysqli_select_db()期望参数1为mysqli,第17行的/home/u256114841/public_html/login.php中给出了字符串   无法连接第15行

2 个答案:

答案 0 :(得分:7)

前言:确保所有表单元素name属性与POST数组匹配,并确保数据库使用正确的数据输入类型及其长度。 < / p>

在mysqli中,首先是连接。

你有

$DB_SELECT = mysqli_select_db(DB_NAME, $link);

应该读作

$DB_SELECT = mysqli_select_db($link, DB_NAME);

阅读手册:

但是......你最好一次性使用所有4个参数:

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

同时摆脱$DB_SELECT = mysqli_select_db($link, DB_NAME);

但是,您正在将MySQL API与mysql_函数混合使用。

那些不同的API 不会混合。

请参阅Stack上的以下内容:

您也没有发布HTML表单以使用POST阵列。

确保您的表单使用POST方法,并且您的输入都具有相同的名称属性。

N.B。: $_POST['Name'] name="name"将失败,如果这是您的表单元素的名称,则所有其他输入都相同。 这些区分大小写。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

此外,您的代码很容易注入SQL。使用准备好的声明。

您不需要使用这样的单独查询。

只需一次添加列和值即可。

$sqlone = "INSERT INTO Account (Name, Username, Password, Mobile_Number) 
            VALUES ('$valueone', '$valuetwo', '$valuethree', '$valuefour')";

mysqli_real_escape_string()用于所有值。

即:

$valueone = mysqli_real_escape_string($link, $_POST['Name']);

并为其他人做同样的事。

我还注意到您可能以纯文本格式存储密码。不建议这样做。

使用以下其中一项:

其他链接:

其他参考资料:

答案 1 :(得分:0)

正确的是

mysqli_select_db ( mysqli $link , string $dbname )

你要放

mysqli_select_db ( string $dbname , mysqli $link )

解决此问题并告诉我是否有效。有关详细信息,请参阅文档:http://php.net/manual/pt_BR/mysqli.select-db.php