0 レビュー
25 回答
php-mysqliによって行を更新するときの奇妙なMySQL重複レコード
mysqli(php)を使用してテーブルを更新すると、奇妙な動作が発生しました。レコードを含む単純なテーブルがあります:
mysql> describe reports_1;
+
line_numberは主キーです(idは外部キーです)。 CLIでこのテーブルを更新すると、すべて問題ありません。
{-code-2}
ただし、php内から正確に同じクエリを実行すると、つまり
{-code-3}
テーブルにダブル(!)の更新があります:
{-code-4}
ご覧のとおり、非常に予期せぬことに(私にとって)更新がコピーされ、独自の新しいキーが与えられ、タイムスタンプが同じで、外部キーがゼロに設定されます。
これを引き起こす原因に頭を包むことができません!この振る舞いに光を当てることができる人はいますか?期待されますか?私は何かが足りないのですか?
事前にご協力いただきありがとうございます。
リクエストに応じて編集
phpスクリプトは、textareaフィールドの値を取得したjs関数から送信されたデータを受信します。
{-code-5}
これですべてです...
わからない
0
レビュー
答え :
--- +
答えへのリンク
わからない
0
レビュー
答え :
-------- + ------ + ----- +
答えへのリンク
わからない
0
レビュー
答え :
--------- +
答えへのリンク
わからない
0
レビュー
答え :
--------- +
|フィールド|タイプ|ヌル|キー|デフォルト|エクストラ|
+
答えへのリンク
わからない
0
レビュー
答え :
--- +
答えへのリンク
わからない
0
レビュー
答え :
-------- + ------ + ----- +
答えへのリンク
わからない
0
レビュー
答え :
--------- +
答えへのリンク
わからない
0
レビュー
答え :
--------- +
| line_number | int(10)unsigned |いいえ| PRI | NULL | auto_increment |
|ユーザー名| varchar(30)|はい| | NULL | |
| id | int(10)unsigned |はい| | NULL | |
|スタンプ|タイムスタンプ|いいえ| | CURRENT_TIMESTAMP |更新時CURRENT_TIMESTAMP|
|コンテンツ| varchar(1000)|はい| | NULL | |
+
答えへのリンク
わからない
0
レビュー
答え :
--- +
答えへのリンク
わからない
0
レビュー
答え :
-------- + ------ + ----- +
答えへのリンク
わからない
0
レビュー
答え :
--------- +
答えへのリンク
わからない
0
レビュー
答え :
--------- + ||| mysql> update reports_1 set content ='works fine' where line_number = '24';
クエリOK、影響を受ける1行(0.00秒)||| $ q = "update reports_1 set content ='works fine' where line_number = '24'";
$ update = $ connection-> query($ q); ||| mysql> select * from reports_1;
+
答えへのリンク
わからない
0
レビュー
答え :
--- +
答えへのリンク
わからない
0
レビュー
答え :
+ ------ +
答えへのリンク
わからない
0
レビュー
答え :
-+
答えへのリンク
わからない
0
レビュー
答え :
--+
| line_number |ユーザー名| id |スタンプ|コンテンツ|
..。
| 24 |ユーザー| 210 | 2016-02-04 11:56:14 |正常に動作します|
| 25 |ユーザー| 0 | 2016-02-04 11:56:14 |正常に動作します|
+
答えへのリンク
わからない
0
レビュー
答え :
--- +
答えへのリンク
わからない
0
レビュー
答え :
+ ------ +
答えへのリンク
わからない
0
レビュー
答え :
-+
答えへのリンク
わからない
0
レビュー
答え :
--+ ||| if(isset($ _ POST ['line_number']))
{{
$ line_nr = $ _POST ['line_number'];
$ update = $ _POST ['record'];
$ q15 = "update reports_1 set content ='$ update' where line_number = $ line_nr";
$ edit = $ connection2-> query($ q15);
if(!$ edit)die( "データベースアクセスに失敗しました:"。$ connection2-> error);
}
答えへのリンク
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。