php - 用PDO重写mysql_*(类似表格的内容)

标签 php mysql pdo

所以我在从 mysql_* 函数迁移到类似 PDO 的语句时遇到了一些麻烦。我有一个表,其中每行输出不同的列。但是,我不确定如何使用 PDO 实现这一目标。

        $SQL = "SELECT `id`, `email`, `information`, `type`, `language`, `status` FROM `requests`";
        $exec = mysql_query($SQL, $link);
           while ($row = mysql_fetch_array($exec)){
              echo "<tr class='tg-031e'>";
              echo "<td class='tg-031e'><input type='checkbox' name='checkbox[]' value=" . $row['id'] . "></form></td>";
              echo "<td class='tg-031e'>" . $row['email'] . "</td>";
              echo "<td class='tg-031e'><textarea readonly style='width:470px;height:80px;border:none;resize:none'>" . $row['information'] . "</textarea></td>";
              echo "<td class='tg-031e'>" . $row['type'] . "</td>";
              echo "<td class='tg-031e'>" . $row['language'] . "</td>";
              if(isset($_POST['checkbox'])){
                foreach($_POST['checkbox'] as $update_id){
                  $update_id = (int)$update_id;
                  $qR = "UPDATE requests SET status='✔' WHERE id=$update_id";
                  mysql_query($qR);
                                    header('Refresh: 1; URL=index.php');
                }
              }
        }

例如,如何从 PDO 的 type 列中获取所有内容?

echo "<td class='tg-031e'>" . $row['type'] . "</td>";

最佳答案

简单的数据库类开始:

<?php 


class db {

    public static $db_host = "";
    public static $db_user = "";
    public static $db_pass = "";
    public static $db_name = "";

    public static function dbFactory() {
        $host = self::$db_host;
        if(strpos($host,":") !==false) {
            $parts = explode(":",$host);
            $hostname = "unix_socket=".$parts[1];
        } else {
            $hostname = "host=$host";
        }
        $user = self::$db_user;
        $pass = self::$db_pass;
        $dbase = self::$db_name;        
        $pdo = new PDO("mysql:$hostname;dbname=$dbase", $user, $pass);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);        
        return $pdo;
    }
}

$id = 115;

$pdo = db::dbFactory();
$stmt = $pdo->prepare("SELECT * FROM `tablename` WHERE `id` = :id ");
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->execute();
$res = $stmt->fetchAll(PDO::FETCH_ASSOC);

print_r($res);

关于php - 用PDO重写mysql_*(类似表格的内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29020327/

相关文章:

PHP/MySQL 如何从 LEFT JOIN 中删除重复信息?

javascript - PHP,Jquery(ajax) post uncaught syntaxerror :unexpected token <

php - 使用preg_replace函数不会插入mysql

Python,当我输入变量的实际值时,MySQL 语句有效,但在使用变量时却无效?

php pdo 不更新表

php - fatal error : Cannot use isset() on the result of an expression

php - MySQL在执行存储过程后调用SHOW ERRORS

php - 如何在 mysqli_query [PHP] 中包含数学?

php - 通过 PDO 连接 Mysql 时出错,但使用基本 mysqli 命令时出错 SQLSTATE[HY000] [2002]

php - CakePHP Bake Shell 错误 : Database connection “Mysql” is missing, 或无法创建