gpt4 book ai didi

php - 表单数据未到达我的数据库

转载 作者:行者123 更新时间:2023-11-29 00:12:56 26 4
gpt4 key购买 nike

我是 PHP 新手,正在尝试通过表单输入详细联系信息。我将以下代码放在一起,从表单中获取信息并将其存储到数据库中。此代码基于几个教程。第一个代码有效,但我不确定这里的安全/sql 注入(inject)。第二种方法是 PDO 方法。我没有收到任何错误消息,但表格没有更新。哪种方法最好,以及关于为什么不在 PDO 上插入的任何指示表示赞赏。表格

<form action="contactForm.php" method="post">
<p>Name: <input name="name" type="text" id="name" size="60"></p>
<p>Email address: <input name="email" type="email" id="email" size="40"></p>
<p>Phone: <input name="phone" type="tel" id="phone" size="40"></p>
<p>Twitter: <input name="twitter" type="text" id="twitter" size="40"></p>
<p>Comment:</p>
<p><textarea name="comment" cols="55" rows="5"id="comment"></textarea></p>
<p><input type="submit" name="submit" value="Submit"></p>
</form>

第一种方法

if(isset($_POST['submit'])){

define('DB_NAME','users');
define('DB_USER','root');
define('DB_PASSWORD','');
define('DB_HOST','localhost');

$conn = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);

if(!$conn){
die('Sorry, we could not connect at this time:'.mysql_error());
}

$db_selected=mysql_select_db(DB_NAME, $conn);

if(!$db_selected){
die('Cannot use'.DB_NAME.':'.mysql_error());
}

mysql_select_db("users", $conn);

$sql = "INSERT INTO usercontacts (name, email, phone, twitter, comment) VALUES ('$_POST[name]', '$_POST[email]', '$_POST[phone]', '$_POST[twitter]', '$_POST[comment]')";

mysql_query($sql,$conn);

mysql_close($conn);

}

和PDO方法

$dbname = 'users';
$dbuser = 'root';
$dbpassword = '';
$dbhost = 'localhost';

try{
$db = new PDO('mysql:host='.$dbhost.';dbname'.$dbname,$dbuser, $dbpassword);
}
catch(PDOException $e){
echo $e->getMessage();
}

if(isset($_POST['name'])){
$name= $_POST['name'];
$email= $_POST['email'];
$phone= $_POST['phone'];
$twitter= $_POST['twitter'];
$comment= $_POST['comment'];

$query = $db->prepare("INSERT INTO usercontacts (name, email, phone, twitter, comment) VALUES (:name, :email, :phone, :twitter, :comment)");
$query->bindValue(':name',$name);
$query->bindValue(':email',$email);
$query->bindValue(':phone',$phone);
$query->bindValue(':twitter',$twitter);
$query->bindValue(':comment',$comment);
$query->execute();
}

最佳答案

这里有错误:

$db = new PDO('mysql:host='.$dbhost.';dbname'.$dbname,$dbuser, $dbpassword);

应该是:

$db = new PDO('mysql:host='.$dbhost.';port=3306; dbname='.$dbname, $dbuser, $dbpassword);

关于php - 表单数据未到达我的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24166360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com