Php 用PDO(类似表的内容)重写mysql_*
因此,我在从mysql.*函数迁移到类似PDO的语句时遇到了一些问题。我有一个表,其中每行输出一个不同的列。然而,我不确定如何通过PDO实现这一点Php 用PDO(类似表的内容)重写mysql_*,php,mysql,pdo,Php,Mysql,Pdo,因此,我在从mysql.*函数迁移到类似PDO的语句时遇到了一些问题。我有一个表,其中每行输出一个不同的列。然而,我不确定如何通过PDO实现这一点 $SQL = "SELECT `id`, `email`, `information`, `type`, `language`, `status` FROM `requests`"; $exec = mysql_query($SQL, $link); while ($row = mysql_fet
$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');
}
}
}
要开始使用的简单db类:
<?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);
对不起,这与问题有什么关系?@schmitsz上面的代码为OP提供了一个示例,说明如何开始使用pdo,并获取一个包含查询结果的数组。似乎是这样的,它可以给OP一个如何重写代码的想法。也许我误解了什么,但在给定的示例中,OP执行了一个获取数组
。我向他展示了一种使用pdo将所有结果获取到数组的方法。这可以用来重写给定的代码。
<?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);