1

mysql_affected_rows()PHPの関数に問題があります。MySQLアップデートを使用しています。phpMyAdminでは、「確認済み」が0から1に変更されますが、mysql_affected_rowsそれでも0が返されます。解決策が見つかりません。私のコードは次のとおりです。

$query = "UPDATE visits                 
SET confirmed = 1
WHERE id = ? AND confirmed = 0 AND expire >  now() - INTERVAL 10 MINUTE;";


$stmt = $this->conn->stmt_init();

if($stmt->prepare($query)) {
$stmt->bind_param('i',$id); //$id is a function parameter
$res = $stmt->execute();

$stmt->close();

echo mysql_affected_rows();
}
4

5 に答える 5

4

mysql_ *関数ではなく、PDOを使用しているようです。したがって、PDOのrowCount関数を使用する必要があります。

$query = "UPDATE visits                 
    SET confirmed = 1
    WHERE id = ? AND confirmed = 0 AND expire >  now() - INTERVAL 10 MINUTE;";

$stmt = $this->conn->stmt_init();

if($stmt->prepare($query)) {
    $stmt->bind_param('i',$id); //$id is a function parameter
    $res = $stmt->execute();

    echo $stmt->rowCount();

    $stmt->close();
}
于 2012-05-15T10:57:49.873 に答える
1

ステートメントを使用するときに影響を受ける行の数を取得するには、 affected_rowsを使用します。UPDATE

$stmt = $this->conn->stmt_init();

if($stmt->prepare($query)) {
    $stmt->bind_param('i',$id); //$id is a function parameter
    $res = $stmt->execute();
    echo $stmt->affected_rows;
    $stmt->close();
}

また、close()ステートメントの前にある必要があります

于 2012-05-15T11:02:00.103 に答える
0

誰もがあなたがPDOを使用していると思っているようですが、私にはMySQLiのように見えますが、MySQLiの方法は次のとおりです。

$query = "
  UPDATE visits                 
  SET confirmed = 1
  WHERE id = ?
    AND confirmed = 0
    AND expire > now() - INTERVAL 10 MINUTE
";

$stmt = $this->conn->stmt_init();

if ($stmt->prepare($query)) {
  $stmt->bind_param('i', $id); //$id is a function parameter
  $res = $stmt->execute();
  echo $stmt->affected_rows; // Here's the good stuff
  $stmt->close();
}
于 2012-05-15T11:07:15.423 に答える
0

このhttp://www.php.net/manual/en/pdostatement.rowcount.phpを使用してください

PDOStatement :: rowCountは、クエリの影響を受ける行数を返します

于 2012-05-15T10:58:41.677 に答える
0

接続をパラメーターとして関数に渡す必要があります。

echo mysql_affected_rows($this->conn);

http://php.net/manual/en/function.mysql-affected-rows.php

于 2012-05-15T10:59:43.517 に答える