16

MySQL DBにデータを挿入しています。挿入が失敗した場合は、そのことを示す適切なエラーメッセージを表示する必要があります。以下の私のコードによると、挿入が成功または失敗した場合Echo-ingのメッセージになります。Inserted

私がやりたいInsertedのは、データの挿入が成功した場合にのみメッセージをエコーし​​、fail失敗した場合は戻ることです。コードを変更するにはどうすればよいですか?

<?php

mysql_connect("localhost", "root", "123") or die(mysql_error());
mysql_select_db("swm_database") or die(mysql_error());

mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error()); 

echo "Inserted";
?>
4

5 に答える 5

39
$result = mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')"));
if($result)
{
echo "Success";

}
else
{
echo "Error";

}
于 2012-07-25T12:54:31.407 に答える
7

本によると、動的Webサイト用のPHPとMySQL(第4版)

例:

$r = mysqli_query($dbc, $q);

INSERTUPDATEDELETEなどの単純なクエリ(レコードを返さない)の場合、$r変数(resultの略)は、クエリが正常に実行されたかどうかに応じて、TRUEまたはFALSEのいずれかになります。

「正常に実行された」とは、エラーなしで実行されたことを意味することに注意してください。クエリの実行が必ずしも望ましい結果をもたらしたという意味ではありません。そのためにテストする必要があります。

では、どのようにテストしますか?

このmysqli_num_rows()関数はSELECTクエリによって生成された行数を返しますが、 INSERTUPDATE、またはDELETEクエリmysqli_affected_rows()の影響を受けた行数を返します。それはそのように使用されます:

$num = mysqli_affected_rows($dbc);

とは異なりmysqli_num_rows()、関数が取る1つの引数はデータベース接続($ dbc)であり、前のクエリ($ r)の結果ではありません。

于 2015-01-21T08:33:31.107 に答える
3

INSERTクエリの後、次ROW_COUNT()のように挿入操作が成功したかどうかを確認できます。

SELECT IF(ROW_COUNT() = 1,  "Insert Success", "Insert Failed") As status;
于 2012-07-25T12:55:00.017 に答える
2

チェック: http: //php.net/manual/en/function.mysql-affected-rows.php

于 2012-07-25T12:57:17.087 に答える
2
if (mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error())) {
  echo 'Success';
} else {
  echo 'Fail';
} 

あなたが持っているor die(mysql_error())ので、それが失敗したときに画面にmysql_error()を表示しますが。それが望ましい結果でない場合は、おそらくそれを削除する必要があります

于 2012-07-25T12:55:04.673 に答える