无法连接到MySQL,错误的代码?

时间:2017-05-16 08:31:37

标签: php mysql phpmyadmin localhost wamp

我曾尝试连接到我的数据库,但没有任何作用......

这是我创建的代码:

$name ='testdb';
$user = 'root';
$password = '';
$host = 'localhost';

$link = new mysqli($name, $user, $password, $host);

$name = $_POST['name'];
$message = $_POST['message'];
$mail = $_POST ['mail'];

$name = $link->real_escape_string($_POST['name']);

$message = $link->real_escape_string($_POST['message']);

$mail = $link->real_escape_string($_POST['mail']);

$sql = "INSERT INTO test (Name, Message, Mail) VALUES ('$name','$message', '$mail')";

$result = $link->query($sql);

我已经仔细检查了所有拼写。 谁能给我一些提示?我可能已经失明了。

3 个答案:

答案 0 :(得分:1)

好像你没有正确初始化mysqli连接

error_reporting(E_ALL);//display all errors   

$name ='testdb';
$user = 'root';
$password = '';
$host = 'localhost';

$link = new mysqli($host, $user, $password, $name);

Use prepared statements(Prevents SQL injection)

$sql = "INSERT INTO test (Name, Message, Mail) VALUES (?,?,?)";//placeholders (3placeholders for 3values)
$statement = $link->prepare($sql);//prepare query. returns true/false
$statement->bind_param('sss',$name, $message, $mail);//you dont need to escape anymore
$statement->execute(); //execute safely   

答案 1 :(得分:0)

mysqli的第一个参数是主机名,您交换了hostnamedatabasename Connect to MySQL

$link = new mysqli($host, $user, $password, $name);

您也可以使用预备语句来阻止SQL injections

  

prepared statement是一种用于以高效率重复执行相同(或类似)SQL语句的功能。

$sql = "INSERT INTO test (Name, Message, Mail) VALUES (?,? ?)";
$stmt =  $link->prepare($sql);
$stmt->bind_param("sss",$name, $message, $mail);
$result = $stmt->execute();
if ($result) {
    // query was successful
}else {
    // query failure
}

答案 2 :(得分:0)

请使用以下代码,它将为您提供帮助

$name ='testdb';
$user = 'root';
$password = '';
$host = 'localhost';

$link = new mysqli($host,$user,$password,$name);
// Check connection
if ($link->connect_error) {
    die("Connection failed: " . $link->connect_error);
} 
$name = $_POST['name'];
$message = $_POST['message'];
$mail = $_POST ['mail'];

$name = $link->real_escape_string($_POST['name']);

$message = $link->real_escape_string($_POST['message']);

$mail = $link->real_escape_string($_POST['mail']);

$sql = "INSERT INTO test (Name, Message, Mail) VALUES ('$name','$message', '$mail')";



if ($link->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $link->error;
}

$link->close();

要学习PHP和MYSQL中的基本知识,请参阅此链接 https://www.w3schools.com/php/