2011-07-29 13 views
0

は、私は、テーブル内のレコーダーを更新するために書いたいくつかのMySQLのPHPのクラスは、更新のように提案し、すべてのものが のみ1機能ではありませんので、よくその機能をOKになるだろう、テーブル にデータを挿入書い私のmysqlクラスの関数の中に問題がありますか?

function update($table=null,$array_of_values=array(),$conditions='FALSE') { 
     if ($table===null || empty($array_of_values)) return false; 
     $what_to_set = array(); 
     foreach ($array_of_values as $field => $value) { 
      if (is_array($value) && !empty($value[0])) $what_to_set[]="'$field'='{$value[0]}'"; 
      else $what_to_set []= "'$field'='".mysql_real_escape_string($value,$this->con)."'"; 
     } 
     $what_to_set_string = implode(',',$what_to_set); 
     return $this->execute("UPDATE $table SET $what_to_set_string WHERE $conditions"); 
    } 

いくつかのフィールドを更新するために使用しようとすると、エラーは返されず、すべてのエラーは返されません。

+0

データベースコントローラが必要です。 – afuzzyllama

+1

トラブルシューティングのテクニックですが、実際に実行しているステートメントを印刷してください。次に、mysqlコマンドラインでその正確な文を実行してみてください(基本的にはphpを画像から取り除きます)。また、phpはエラーを表示するためにphp.iniファイルに設定された適切なエラー報告レベルを持っている必要があります。 –

+0

私は既にケビンとこれを行ったことがあります。私は問題を見つけました。偉大なコメントをありがとうございます。 – Marco

答えて

0

あなたはカラム名を一重引用符で囲みました。エイリアスを宣言するときを除いて、識別子は一重引用符で囲まれません。

UPDATE table SET color = 'red' 

ませ

UPDATE table SET 'color' = 'red' 

あなたのコードが生成するものです。予約語を識別子として許可したい場合は、それらを `一重引用符 'ではなく`バッククォート `で囲みます。

+0

アドバイスいただきありがとうございますが、まだうまくいきません。 – Marco

+0

1)わからないのでもう助けてもらえません。あなたが正しい変更をしたかどうか –

+0

2)この関数は存在してはいけません。 PDOまたはmysqliプリペアドステートメントを使用します。これをあなた自身でロールする必要はなく、あなたはそれをうまくやっていません。すべての値は一重引用符で囲まれていません。 –

関連する問題