2

だから私は本で見つけたこの機能を使用していますが、うまくいかないようです。

/*
Update records in the database
@param String the table
@param Array of changes field => value
@param String the condition
@return Bool
*/    
public function updateRecords($table, $changes, $condition){
    $update = " UPDATE " . $table . " SET ";
    foreach($changes as $field => $value){
        $update .=  "`" . $field . "`='{$value}',";
    }

    //remove our trailing ,
    $update = substr($update, 0, -1);
    if($condition != ""){
        $update .= " WHERE " . $condition;
    }
    $this->executeQuery($update);
    return true;
}

次のようにオブジェクトをインスタンス化しました。

$a = new Mysqldb($z);
$g = $a->newConnection("localhost", "root", "secrete", "mydatabase");

指定された方法を次のように使用しました。

$a->updateRecords("members", array("id" => 10, "username" => "Paco"), " WHERE id= 10");

しかし、構文にエラーがあると言って、うまくいきません。

Fatal error: Error executing query: UPDATE members SET `id`='10',`username`='Paco' WHERE WHERE id= 10 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id=10' at line 1 in C:\Users\Robert\Documents\web development\xampp\htdocs\xampp\web_development\MVC\registry\mysqldb.class.php on line 86

そのため、バッククォートを使用してコマンド ラインで同じクエリを直接実行したところ、成功しました。助言がありますか?

4

2 に答える 2

5

変化する

$a->updateRecords("members", array("id" => 10, "username" => "Paco"), " WHERE id= 10");

$a->updateRecords("members", array("id" => 10, "username" => "Paco"), " id= 10");

2回の追加WHERE条項です

WHERE別のものを追加しています

if($condition != ""){
    $update .= " WHERE " . $condition;
} 

これがエラーの原因です。

于 2013-06-13T01:28:20.460 に答える
2

エラーメッセージをよく見てください。WHEREクエリに が 2 回表示されていることを示しています。

呼び出しで渡す文字列から を削除すると、機能するはずWHEREです。$condition$a->updateRecords()

于 2013-06-13T01:28:39.183 に答える