8

私はこのクエリを持っています:

INSERT INTO db1.outbox (DestinationNumber, TextDecoded)
SELECT User.CellPhone, '$SMSMessage' as TextDecoded
FROM db2.User
WHERE User.PurchaseDate BETWEEN 2012-01-01 AND 2012-01-31

「outbox」テーブルに複数の行を挿入します。しかし、挿入された行数はわかりません。そのSQL構文から挿入された行数を取得する方法は? ありがとう。

更新 このコマンドの結果として「-1」を取得しました:

$insertedRows = mysql_query("SELECT ROW_COUNT()");
$rowInserted = mysql_fetch_array($insertedRows);
$rowInserted = $rowInserted[0];
echo $rowInserted;

しかし、テーブルに 27 行が挿入されていることがわかります。私は何を間違えましたか?

4

2 に答える 2

12

これを最後のステートメントに入れます。

SELECT ROW_COUNT();

更新 1

使用方法mysql_affected_rows、例

<?php

   $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
   if (!$link) 
   {
       die('Could not connect: ' . mysql_error());
   }
   mysql_select_db('mydb');

   /* this should return the correct numbers of deleted records */
   mysql_query('you SQL QUERY HERE');
   printf("Records deleted: %d\n", mysql_affected_rows());

?>
于 2012-09-27T14:34:30.547 に答える
2

以下にいくつかの可能性を示します。

»AUTO_INCREMENT列がある場合は、挿入前後の行番号を取得できます

» 、、、または( doc )の場合、SELECT ROW_COUNT()最後のステートメントによって変更、削除、または挿入された行の数を返します。UPDATEDELETEINSERT

» mysqli_affected_rows(mysql_関数は非推奨であるため) を使用して、以前の MySQL 操作で影響を受けた行の数を取得できます ( doc )

$link = mysqli_connect("localhost", "my_user", "my_password", "world");

if (!$link) {
    printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error());
    exit();
}

/* Insert rows */
mysqli_query($link, "INSERT INTO myTable VALUES (1)");
printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link));
于 2012-09-27T15:07:58.673 に答える