PHP 没有发布到 mysql 数据库

PHP not posting to mysql database

所以我已经有一段时间没有使用 PHP 所以我寻求一些帮助。我给了它一个很好的机会,但无论出于何种原因,我的表格都没有发布到我的数据库中。我点击提交并清除表格。我没有收到任何错误,但数据库仍然是空的。

如有任何帮助或建议,我们将不胜感激。

这是我的 HTML

                <form id="contact-form" method="post"> 

            <div>
            <label> <span>Name: *</span>
            <input type="text" tabindex="1" name="postName" required autofocus />
            </label>
            </div>
            <div>
            <label> <span>Email: *</span>
            <input type="email" tabindex="2" name="postEmail" required />
            </label>
            </div>
            <div>
            <label> <span>Telephone:</span>
            <input  type="tel" tabindex="3" name="postPhone"/>
            </label>
            </div>
            <div>
            <label> <span>Message: *</span>
            <textarea placeholder="Include all the details    you can" tabindex="5" name="postMessage" required></textarea>
            </label>
            </div>
            <div>
            <input name="formSubmit" type="submit" id="contact-submit" value="Submit" />
            </div>
            </form>

这是我的PHP

<?php
//show all possible errors. should be ALWAYS set to that level
error_reporting(E_ALL); 
echo "landed at form handler<br>";

// sometimes buttons not being sent or gets misspelled
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo "here goes POST processing<br>";
$host = 'localhost';
$username = 'name';
$pass = 'password';
$dbname = 'dbname';

mysql_connect($host,$username,$pass);
mysql_select_db($dbname);

// all strings should be escaped
// and it should be done after connecting to DB
$name    = mysql_real_escape_string($_POST['postName']);
$email = mysql_real_escape_string($_POST['postEmail']);
$phone  = mysql_real_escape_string($_POST['postPhone']);
$message     = mysql_real_escape_string($_POST['postMessage']);

$query = "INSERT INTO ContactUs 
         (NAME, EMAIL, PHONE, MESSAGE)
          VALUES ('$name','$email','$phone','$message')";

echo $query;
// always run your queries this way to be notified in case of error
$result = mysql_query($query) or trigger_error(mysql_error().".        Query: ".$query);
var_dump($result);
}
?>

MySQL 已弃用,请改用 MySQLi。

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

$sql = "INSERT INTO ContactUs(NAME, EMAIL, PHONE, MESSAGE)
VALUES ('".$name."','".$email."','".$phone."','".$message."')";

$conn->query($sql)

$conn->close();

有关使用 MySQLi here.

插入的更多信息

注意:还有一个过程MySQLi,更类似于你习惯的,而不是我例子中的面向对象对应物。

注意 2: 此外,正如 fred-ii 所指出的,如果您的 <form> 中没有 action 属性,您的 php 必须在同一页中,但是根据您有这一行的事实来判断:

if($_SERVER['REQUEST_METHOD'] == 'POST')

在文件的开头我只是假设它是。

注 3: 此外,正如 Spencer 指出的那样,mysql 已被弃用,但它可能仍然有效。无论如何,我真的强烈建议您更新到 MySQLi 或 PDO。

希望对您有所帮助!

试试这个。我使用 MySQLi 重写了您的代码并使用了准备好的语句。您可能 应该使用 PDO,但就目前而言,这比您目前拥有的要好得多。

$link = new MySQLi('localhost','username','password','database');

    if(isset($_POST['postName'],$_POST['postEmail'],$_POST['postPhone'],$_POST['postMessage'])&& $_POST['postName'] !="" && $_POST['postEmail'] !="" && $_POST['postPhone'] !="" && $_POST['message'] !=""){
        $name = $_POST['postName'];
        $email = $_POST['postEmail'];
        $phone = $_POST['postPhone'];
        $message = $_POST['postMessage'];
        if($query = $link->prepare("INSERT INTO ContactUs (name,email,phone,message) VALUES(?,?,?,?)")){
            $query->bind_param('ssss',$name,$email,$phone,$message);
            $query->execute();
            $query->close();
            return true;
        }else{
            return false;
        }
    }else{
       return false;
    }

此脚本 returns 如果成功则为真。

Returns 如果失败则返回 false。

Returns 如果任何输入留空则为 false。

如果您愿意,可以将它们从 return_true/false 更改为 echo 'Success'; echo 'Failure';

希望对您有所帮助。

更好用

if(isset($_POST['formSubmit'])
{ 
//your code goes here
}

这将确保您的代码将 运行 在您点击提交按钮并且您的表单数据提交到您的页面后立即执行

确保所有内容都在同一页面上,因为您的表单上没有任何操作属性

接下来是 你必须熟悉使用 mysqli_* 因为 mysql_* 已贬值