数据库没有连接

Asr*_*ala 2 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();
?>
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

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

Fun*_*ner 7

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


在mysqli中,连接是第一位的.

你有

$DB_SELECT = mysqli_select_db(DB_NAME, $link);
Run Code Online (Sandbox Code Playgroud)

应该读作

$DB_SELECT = mysqli_select_db($link, DB_NAME);
Run Code Online (Sandbox Code Playgroud)

阅读手册:

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

$link = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
Run Code Online (Sandbox Code Playgroud)

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

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

那些不同的API 不会混用.

请在Stack上查询以下内容:

您也没有发布HTML表单以与POST阵列一起使用.

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

注: $_POST['Name']用name="name"会失败,如果这是你的表单元素被命名为与同为所有其他投入.这些都是区分大小写的.

将错误报告添加到文件的顶部,这将有助于查找错误.

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

// rest of your code
Run Code Online (Sandbox Code Playgroud)

旁注:显示错误只能在分段中完成,而不能在生产中完成.

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

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

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

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

使用mysqli_real_escape_string()您的所有值.

即:

$valueone = mysqli_real_escape_string($link, $_POST['Name']);
Run Code Online (Sandbox Code Playgroud)

并为其他人做同样的事情.

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

使用以下之一:

其他链接:


其他参考: