0

やっていることはフォームを使ってPHPでMySQLデータのデータを編集することです。

名前と携帯電話番号として 2 つのテキスト フィールドがあります。編集をクリックすると、テキスト フィールドに同じデータが表示され、その下に [保存] ボタンがあります。変更を行うと、完了として応答が返されますが、編集をクリックしてテキスト フィールドを変更せずに [保存] をクリックすると、失敗として応答が返されます。

以下はSAVEボタンのコードです。

$sql = mysql_query("
    UPDATE userInfo SET fullName='$fullName', 
    mobileNumber='$mobileNumber' 
    WHERE id=$tagNumberId"
);

if (mysql_affected_rows()==1) {
    echo "done";
} else {
    echo "fail";
}

心配ですmysql_affected_rows()

mysql_affected_rows()上記では、UPDATEステートメントでデータが同じ場合は0を返し、UPDATEステートメントでデータが同じでない場合は1を返すと思いますmysql_affected_rows()

これは正しいですか?それが正しい場合、更新が行われたかどうかをどのように処理しますか?

4

2 に答える 2

3

クエリを実行した直後にmysqli_infoを使用する

$string = mysqli_info ( $link );

UPDATE のように、関連情報を含む文字列を返します

Rows matched: 40 Changed: 40 Warnings: 0

あなたの場合、1行が更新されましたが、変更はありません。取得する必要があります

Rows matched: 1 Changed: 0 Warnings: 0

から値を取得できます。

preg_match("/Rows matched: (\d+)/", $string, $matches);
$number_of_rows = intval($matches[1]);
于 2013-02-21T10:47:27.483 に答える
1

UPDATEの正しい mysql の動作です。しかし、本当にこれが必要な場合は、巧妙なトリックを使用できます。

$sql = mysqli_query("UPDATE userInfo SET id=@id:=id
                    fullName='$fullName',
                    mobileNumber='$mobileNumber'
                    WHERE id=$tagNumberId");
$result = mysqli_query($link, 'select @id');
if (array(null)!==mysqli_fetch_row($result)) {
    echo "done";
} else {
    echo "fail";
}

PSアプリケーションには準備済みステートメントを使用する必要があります。

この方法の PPS ではカウントを認識できませんが、id の更新を使用する場合は必要ありません。

于 2013-02-21T10:08:40.873 に答える