PDO选择然后更新


PDO Select then Update

构建一个工具,该工具首先提取一个sim编号,然后将其标记为已获取。第一部分工作得很好,正在用ajax提供给我的页面。第二部分似乎不起作用。

include_once 'inc/db_connect.php';
$stmt = $db->query('SELECT sim FROM p2p WHERE taken = 0 ORDER by id ASC LIMIT 1');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $result = $row['sim'];
}
echo json_encode($result);
$stmt = $db->prepare("UPDATE p2p SET taken = 1 WHERE sim = ?");
$stmt->bind_param('i', $result);
$stmt->execute(); 

有什么想法吗!

这是因为bind_param()MySQLi_*语法,并且您正在使用PDO

fetch(PDO::FETCH_ASSOC)


  • 使用PDO的bindParam()功能

这两种API并不混合。

如果不起作用,请使用bindValue()

在连接打开后立即添加$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);。这将是错误的信号。


洞察

我在您发布的前一个问题中注意到,您正在使用mysqli_*函数连接到您的数据库。

$result = mysqli_query($conn, $query);

如果仍然是这种情况,那么你不能以任何方式、形状或形式将PDO与mysqli_混合

  • 这些MySQL API不会相互混合
  • 咨询:http://php.net/manual/en/mysqlinfo.api.choosing.php