因为我使用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);
}
?>
答案 0 :(得分:2)
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指出的那样,如果您的action
中没有<form>
属性,那么您的php必须位于同一页面中事实上,你有这一行:
if($_SERVER['REQUEST_METHOD'] == 'POST')
在文件的开头我刚认为是。
Note3:另外,正如Spencer所指出的那样,不推荐使用mysql,但它仍然有效。无论如何,我真的会敦促你更新到MySQLi或PDO。
希望它有所帮助!
答案 1 :(得分:2)
试试这个。我使用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;
}
如果成功,此脚本将返回true。
如果失败则返回false。
如果任何输入留空,则返回false。
如果您愿意,可以将其从return_true/false
更改为echo 'Success';
或 echo 'Failure';
。
我希望这会有所帮助。
答案 2 :(得分:0)
更好地使用
if(isset($_POST['formSubmit'])
{
//your code goes here
}
这将确保您的代码在您点击提交按钮并且您的表单的数据已在您的页面上提交后立即运行
确保所有内容都在同一页上,因为您的表单上没有任何操作属性
接下来是 你必须通过使用mysqli_ *来熟悉自己 因为mysql_ *被解除了