If you get a segfault with sybase-ct, add a en_US entry to your $SYBASE/locales/locales.dat file:
[linux]
locale = en_US, us_english, iso_1
...
(PHP 4, PHP 5)
sybase_affected_rows — 直近のクエリで変更された行の数を得る
この機能は PHP 7.0.0 で 削除 されました。
$link_identifier
] ) : intsybase_affected_rows() は、指定したリンク ID が 指すサーバーにおいて直近の INSERT、UPDATE、DELETE クエリで変更された レコードの数を返します。
このコマンドは、SELECT 文には使用できません。レコードを変更する 文のみに使用できます。SELECT から返された行の数を得たい場合は sybase_num_rows() を使用してください。
link_identifier
リンク ID を省略した場合は、最後にオープンしたリンクを使用します。
変更された行数を整数値で返します。
例1 削除クエリ
<?php
/* データベースに接続します */
sybase_connect('SYBASE', '', '') or
die("接続できません");
sybase_select_db("db");
sybase_query("DELETE FROM sometable WHERE id < 10");
printf("削除したレコード数: %d\n", sybase_affected_rows());
?>
上の例の出力は以下となります。
削除したレコード数: 10
If you get a segfault with sybase-ct, add a en_US entry to your $SYBASE/locales/locales.dat file:
[linux]
locale = en_US, us_english, iso_1
...
The sybase_affected_rows() function seems to work now with the Sybase DB Library. Not sure when this improvement was made, but I'm currently running PHP 4.1.2 on Solaris.
Affected rows seems to return a -1 if the query syntax was incorrect on the last submitted query.
Affected rows returns 0 if no rows were affected or another error occured, such as a foreign key violation and also returns 0 if the query was successfully, but no records were affected by the query.
If the query was valid and did affect some rows, sybase_affected_rows() seems to be returning the correct number.