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_* 已贬值
所以我已经有一段时间没有使用 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_* 已贬值