我无法连接到我的数据库.这是我的代码,请你帮帮我.
<?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行
前言:确保所有表单元素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)
并为其他人做同样的事情.
我还注意到您可能以纯文本格式存储密码.不建议这样做.
使用以下之一:
crypt()bcrypt()scrypt()password_hash()功能.其他链接:
其他参考:
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |