为什么提交php后数据没有插入mysql数据库,也没有出现任何错误


Why is the data not inserted into mysql database after submitting php nor is it giving out any error?

我的代码在下面,我不知道我的代码出了什么问题,当我在phpmyadmin 中看到时,它说数据已提交但未插入mysql数据库

<?php
$dbhost = 'localhost';
$dbuser = 'Krishna';
$dbpass = 'xxxx';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
session_start();
if (isset($_POST['submit'])){
    if(! $conn ) {
        die('Could not connect: ' . mysqli_error());
    }
}
mysqli_select_db($conn, "krishna");
$sql = "INSERT INTO contact_us (name, email, sub, mess) 
    VALUES ('$_POST[name]','$_POST[email]','$_POST[sub]','$_POST[mess]')";
if(! $sql) {
    die('Error: ' . mysqli_error());
}
echo "1 Record Added to Table'n";
echo "<a href='contactForm.html'>Back to main page</a>";
mysqli_close($conn);
?>

首先让我说,你可以这样做,试图学习如何使用SQL,我在第一次学习时也这样做了,但后来意识到。。。

此方法会受到SQL注入攻击,不应使用。直接接受任何用户输入而不首先对其进行消毒是一个可能导致安全漏洞的严重错误。

我们现在有了像PDO语句这样的工具,可以为进入数据库准备SQL。请考虑使用类似的工具,在从用户那里获取任何信息时准备您的语句。

不信任用户。在下面的代码中,当您bindValue时,它会使用变量$id并删除任何有害的内容。

<?php
$stmt = $db->prepare("SELECT * FROM table WHERE id=? AND name=?");
$stmt->bindValue(1, $id, PDO::PARAM_INT);
$stmt->bindValue(2, $name, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

请参阅此链接以获取上面代码的源代码和PDO教程。不过可能还有更好的教程。

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers