我正在阅读有关如何使用PHP将数据插入和更新到MySQL表的教程,代码如下所示.我的问题是当我点击更新但我没有修改任何数据时,rowCount()返回0并破坏代码.
我的问题是,如果我只是使用数据库中的相同值更新数据库,为什么rowCount()返回零?我的想法是,即使它是相同的数据,它仍然会插入并返回更新行的计数?我猜它在尝试更新之前检查数据?任何人都可以为我阐明这一点,并建议一个解决方法?我已经在代码上主演了好几个小时,并且无法想出任何东西,谢谢.
<?php
require_once('../includes/connection.inc.php');
// initialize flags
$OK = false;
$done = false;
// create database connection
$conn = dbConnect('write', 'pdo');
if (isset($_GET['article_id']) && !$_POST) {
// prepare sql query
$sql = 'SELECT article_id, title, article FROM blog WHERE article_id = ?';
$stmt = $conn->prepare($sql);
// bind the results
$stmt->bindColumn(1, $article_id);
$stmt->bindColumn(2, $title);
$stmt->bindColumn(3, $article);
// execute query by passing array of variables
$OK = $stmt->execute(array($_GET['article_id']));
$stmt->fetch();
}
// if form has been submitted, update record
if (isset($_POST['update'])) {
//prepare …Run Code Online (Sandbox Code Playgroud) 其他人已经问过这个问题了,但我的问题有点具体.
我有这个问题:
$sql = "UPDATE table SET option=? WHERE number=?";
$q = $conn->prepare($sql);
$q->execute(array($option, $number));
$q->setFetchMode(PDO::FETCH_BOTH);
echo $q->rowCount();
Run Code Online (Sandbox Code Playgroud)
如果WHERE number已经存在且SET option相同,则$q->rowCount()等于0
如果WHERE number不存在且行未更新,$q->rowCount()则为equals0
如何区分这些非更新?
我试图mysql_insert_id使用PDO.到目前为止,我还没有找到一个适用于插入和更新的好例子.有没有人有一个完整的代码作为例子?