フィールドa、b、c、dを持つmysqlテーブルfooに複数のレコードがあり、aが主キーであるとします。レコード1は、a = 1、b =真、c = val1a、d = val2aのデータを有する。 私はPHPを使用してデータにアクセスしたい場合は、私が行いますPHP MYSQLはmysqlへの連想配列(レコード)を書き込みます
$result = mysql_query("SELECT * FROM foo WHERE a = '1'");
$rec = mysql_fetch_array($result);
bとcを変更するには、私はどうなる:
mysql_query("INSERT INTO foo (b,c) VALUES (false,'newval') WHERE a = '1'");
がすべてリストアップすることなく、全体のレコードを書き込むためにそこの方法ですフィールド(a、b、c、d)?私がやりたい何
はfooテーブルに戻って全体の$ RECを書くです:私はforeachの操作を行うと、全体のインサートを構築することができ知っ
$rec['b'] = false;
$rec['c'] = 'newval';
mysql_query("INSERT INTO foo $rec");
、すでにないPHP関数があります私は何を達成しようとしていますか?
はい、タイプミス、私はUPDATEを意味しました。私はしばらくの間、mysqlを行ってきましたが、レコードの変更、レコードの変更の書き込み、mysql_fetch_arrayのレコードが連想配列として読み込まれ、選択がすべてのフィールドに適用され、php関数が書き込まれる連想配列をそこに戻す。私はmysqliのものを見て、それを使っています。 – user999684
読み取りと書き込みとは非常に異なります。すべてのデータを読み取るときは、DBに格納されているとおりに文字列として返されます。したがって、書き込みが行うすべての型の検証、エスケープなどは必要ありません。 OTOHでは、さまざまなフィールドやデータに適切なアクションを取らずに書き込むことで、エラー、不正なデータやセキュリティの問題が発生しやすくなります。 – Nikoloff
情報ありがとうございます。このことを説明する良い記事がありますか?だから、レコードのint型フィールドを読み込んだ場合、それを文字列として返します。それで、もし書き直すと、データベースが壊れてしまいます。そうではありません。あなたは、値123のintfldというintフィールドがある場合、上記のメソッドを使ってそのフィールドを読み込み、$ var1 = $ rec ['intfld']のような変数に代入してからmysql_query( "UPDATE foo SET intfld = "'。$ var1。'" WHERE a = '1' ");それはデータベースの破損を引き起こすでしょうか?私はあなたの助けに感謝します。 – user999684