我可以改善我的PDO方法吗(刚刚开始)

莫格里

我刚刚从mySQLi(从mySQL)切换到PDO,到目前为止一切都很好,也很容易,尤其是关于准备好的语句

这就是我准备好的带预选语句的东西

主数据库文件(包含在所有页面中):

class DBi {
    public static $conn;
    // this I need to make the connection "global"
}

try {

    DBi::$conn = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8", $dbuname, $dbpass);
    DBi::$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    DBi::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}

catch(PDOException $e) {

    echo '<p class="error">Database error!</p>';

}

在我的页面中:

try {

    $sql = 'SELECT pagetitle, pagecontent FROM mypages WHERE pageid = ? LIMIT 1';

    $STH = DBi::$conn->prepare($sql);

    $STH->execute(array($thispageid));  // $thispageid is from a GET var

}

catch(PDOException $e) {
    echo '<p class="error">Database query error!</p>';
}

    if ($STH) {  // does this really need an if clause for it self?

        $row = $STH->fetch();

        if (!empty($row)) {  // was there found a row with content?

            echo '<h1>'.$row['pagetitle'].'</h1>
            <p>'.$row['pagecontent'].'</p>';

        }

    }

一切正常。但是我做对了吗?还是可以简化一些地方?

使用if(!empty($ row)){}是一种好的解决方案,用于检查结果行是否包含内容?在准备好的缩小选择中找不到其他体面的方法来检查数字

比尔·卡文(Bill Karwin)
catch(PDOException $e) {
    echo '<p class="error">Database query error!</p>';
}

我将借此机会记录发生哪个数据库查询错误。

在此处查看示例:http : //php.net/manual/en/pdostatement.errorinfo.php

同样,如果发现错误,则可能应该return从函数或脚本中进行。

if ($STH) {  // does this really need an if clause for it self?

如果$STH无效,则它应该已经生成了异常并已被先前捕获。而且,如果您从该catch块中的函数返回了代码,那么您将到达代码中的这一点,因此无需再次测试$STH是否为非null。刚开始从中获取。

    $row = $STH->fetch();

    if (!empty($row)) {  // was there found a row with content?

我会这样写:

$found_one = false;
while ($row = $STH->fetch()) {
    $found_one = true;
    . . . do other stuff with data . . .
}
if (!$found_one) { 
    echo "Sorry! Nothing found. Here's some default info:";
    . . . output default info here . . .
}

无需测试是否为空,因为如果为空,则循环将退出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我刚刚开始学习python。我想获取文件名作为用户输入

来自分类Dev

我刚刚开始学习使用硒的网络抓取。我需要登录本地网站并双击某些项目

来自分类Dev

我刚刚开始学习JavaScript,但我正尝试建立一个计算器网站,但无法正常运行

来自分类Dev

我刚刚开始学习使用C ++的链接列表。我正在尝试使用矢量创建一个链表。为什么此代码有问题?

来自分类Dev

我刚刚开始android开发,当我制作此应用程序时,它在调试时不起作用

来自分类Dev

在SQL中替换刚刚开始的字符串

来自分类Dev

PayPal API SSL问题-刚刚开始

来自分类Dev

在SQL中替换刚刚开始的字符串

来自分类Dev

获取刚刚开始的屏幕会话的PID

来自分类Dev

Azure Worker 角色刚刚开始工作

来自分类Dev

因此,我刚刚开始在treehouse.com中学习Java,它已经完成了基本工作,但是当我尝试在Intellij想法上学到的所有内容时,我却无济于事

来自分类Dev

因此,我刚刚开始在treehouse.com中学习Java,它已经完成了基础工作,但是当我尝试在Intellij想法上学到的所有东西时,我却无济于事

来自分类Dev

“不支持URI格式。” 异常刚刚开始以非常老的,未更改的代码显示

来自分类Dev

Flask Python刚刚开始向网址添加随机哈希.dpbs

来自分类Dev

刚刚开始与Google图表+ displayMode = text一起发生的MissingKeyMapError

来自分类Dev

刚刚开始与Google图表+ displayMode = text一起发生的MissingKeyMapError

来自分类Dev

我的Regex可以改善吗?

来自分类Dev

使用LINQ可以改善我的代码吗?

来自分类Dev

我可以改善Firebase的结构吗?

来自分类Dev

我可以保证发布刚刚创建的项目吗?

来自分类Dev

我可以将这个PDO缩短吗

来自分类Dev

我可以在 PDO SELECT 期间“消毒”吗?

来自分类Dev

我刚刚删除了要点。我可以使用克隆还原它吗?

来自分类Dev

我相信这个Perl脚本是安全的。可以改善吗?

来自分类Dev

我可以改善此代码以绘制轮廓文字吗

来自分类Dev

我可以改善NVIDIA卡的高清视频播放能力吗?

来自分类Dev

我的背包式递归解决方案可以改善吗?

来自分类Dev

我可以改善NVIDIA卡的高清视频播放能力吗?

来自分类Dev

我相信这个Perl脚本是安全的。可以改善吗?

Related 相关文章

  1. 1

    我刚刚开始学习python。我想获取文件名作为用户输入

  2. 2

    我刚刚开始学习使用硒的网络抓取。我需要登录本地网站并双击某些项目

  3. 3

    我刚刚开始学习JavaScript,但我正尝试建立一个计算器网站,但无法正常运行

  4. 4

    我刚刚开始学习使用C ++的链接列表。我正在尝试使用矢量创建一个链表。为什么此代码有问题?

  5. 5

    我刚刚开始android开发,当我制作此应用程序时,它在调试时不起作用

  6. 6

    在SQL中替换刚刚开始的字符串

  7. 7

    PayPal API SSL问题-刚刚开始

  8. 8

    在SQL中替换刚刚开始的字符串

  9. 9

    获取刚刚开始的屏幕会话的PID

  10. 10

    Azure Worker 角色刚刚开始工作

  11. 11

    因此,我刚刚开始在treehouse.com中学习Java,它已经完成了基本工作,但是当我尝试在Intellij想法上学到的所有内容时,我却无济于事

  12. 12

    因此,我刚刚开始在treehouse.com中学习Java,它已经完成了基础工作,但是当我尝试在Intellij想法上学到的所有东西时,我却无济于事

  13. 13

    “不支持URI格式。” 异常刚刚开始以非常老的,未更改的代码显示

  14. 14

    Flask Python刚刚开始向网址添加随机哈希.dpbs

  15. 15

    刚刚开始与Google图表+ displayMode = text一起发生的MissingKeyMapError

  16. 16

    刚刚开始与Google图表+ displayMode = text一起发生的MissingKeyMapError

  17. 17

    我的Regex可以改善吗?

  18. 18

    使用LINQ可以改善我的代码吗?

  19. 19

    我可以改善Firebase的结构吗?

  20. 20

    我可以保证发布刚刚创建的项目吗?

  21. 21

    我可以将这个PDO缩短吗

  22. 22

    我可以在 PDO SELECT 期间“消毒”吗?

  23. 23

    我刚刚删除了要点。我可以使用克隆还原它吗?

  24. 24

    我相信这个Perl脚本是安全的。可以改善吗?

  25. 25

    我可以改善此代码以绘制轮廓文字吗

  26. 26

    我可以改善NVIDIA卡的高清视频播放能力吗?

  27. 27

    我的背包式递归解决方案可以改善吗?

  28. 28

    我可以改善NVIDIA卡的高清视频播放能力吗?

  29. 29

    我相信这个Perl脚本是安全的。可以改善吗?

热门标签

归档