PDO写入数据
数据库的表结构。
create table stuInfo(id int(4) primary key auto_increment,
major varchar(10),
name varchar(5),
locality varchar(4),
readingway varchar(3),
pid int(18),
phone int(11),
email varchar(25),
fname varchar(5),
fphone int(11),
mname varchar(5),
mphone int(11),
nonename varchar(5),
nonephone int(11));
处理表单的文件
<html>
<body>
<?php
print_r($_POST);
#$hostname='localhost';
#$dbname='stuInfo';
#$username='root';
#$password='xxxx';
#
#try {
# $conn = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
# // set the PDO error mode to exception
# $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
# $sql = "INSERT INTO stuInfo (major,name,locality,readingway,pid,phone,email,fname,fphone,mname,mphone,nonename,nonephone)".
# "VALUES (:major,:name,:locality,:readingway,:pid,:phone,:email,:fname,:fphone,:mname,:mphone,:nonename,:nonephone)";
# $statement=$conn->prepare($sql);
# $statement->execute($_POST)
# echo "New record created successfully";
# }
#catch(PDOException $e)
# {
# echo $sql . "<br>" . $e->getMessage();
# }
#
#$conn->close();
?>
</body>
</html>
发送表单后,有结果
Array ( [major] => 物理 [name] => test [locality] => 广东 [readingway] => 跟班 [pid] => 123456 [phone] => 123456 [email] => xxxx@xx.com [fname] => test [fphone] => 123456 [mname] => test [mphone] => 123456 [nonename] => test [nonephone] => 123456 )
现在,改变处理表单的文件--消除每行开头的注释符号。
<html>
<body>
<?php
print_r($_POST);
$hostname='localhost';
$dbname='stuInfo';
$username='root';
$password='xxxx';
try {
$conn = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO stuInfo (major,name,locality,readingway,pid,phone,email,fname,fphone,mname,mphone,nonename,nonephone)".
"VALUES (:major,:name,:locality,:readingway,:pid,:phone,:email,:fname,:fphone,:mname,:mphone,:nonename,:nonephone)";
$statement=$conn->prepare($sql);
$statement->execute($_POST)
echo "New record created successfully";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn->close();
?>
</body>
</html>
表单再次发送后,注意
1。print_r($_POST) 没有执行
为何,这个应当执行吧,无论后面是否有错
2。为何try catch 无法获得错误输出?
3。正确的写法应当是怎样?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为你的代码写错了,你应该将错误提示都关闭了,所以没有看到,'$statement->execute($_POST)'后面少了分号,代码触发了编译时的语法解析错误,所以这段代码都不运行了;
而try、catch是捕获异常,异常是出现正常逻辑之外的情况;
你的try、catch写法没错,只是语法错了,深入了解一下错误和异常的差别。