PDO写入数据

发布于 2022-09-05 21:48:21 字数 2912 浏览 10 评论 0

数据库的表结构。

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里南柯 2022-09-12 21:48:21

因为你的代码写错了,你应该将错误提示都关闭了,所以没有看到,'$statement->execute($_POST)'后面少了分号,代码触发了编译时的语法解析错误,所以这段代码都不运行了;
而try、catch是捕获异常,异常是出现正常逻辑之外的情况;
你的try、catch写法没错,只是语法错了,深入了解一下错误和异常的差别。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文