0

データベーステーブルがあり、この方法でテーブルの列を更新しています。

    $mysqli = new mysqli('localhost', 'root', '', 'db');

        if (mysqli_connect_errno()) {
            echo 'failed to connect to db.. <br>' . mysqli_connect_errno();
            return 'error';
        }

   $username = $data['username'];
   $data['image'] = $this->replace_whitespace($data['image']);

   foreach($data as $key=>$value){

       $this->query = "UPDATE users SET $key=? WHERE username='$username'";
       $this->statement = $mysqli->prepare($this->query);

       if($this->statement){

           $this->statement->bind_param('s', $value);
           $this->statement->execute();
           $this->statement->close();
       }

   }

一度に複数のテーブル列を更新することは可能ですか? 私はこれを試しましたが、無駄でした。

   $this->query = "UPDATE users SET col1=?, col2=?, col3=? WHERE username='$username'";
   $this->statement = $mysqli->prepare($this->query);

   if($this->statement){

       $this->statement->bind_param('sss', $value1, $value2, $value3);
       $this->statement->execute();
       $this->statement->close();
   }

これを行うより良い方法はありますか?

        $mysqli = new mysqli('localhost', 'root', '', 'db');

        if (mysqli_connect_errno()) {
            echo 'failed to connect to db.. <br>' . mysqli_connect_errno();
            return 'error';
        }
        $username = $data['username'];
        $this->query = "UPDATE users SET fname=?, lname=?, email=?, tpin=?, image=?, address=? country=?, city=?, state=?, postal=? WHERE username='$username'";
        $this->statement = $mysqli->prepare($this->query);

        if ($this->statement) {
            $this->statement->bind_param('ssssssssss', $data['fname'],$data['lname'],$data['email'],$data['tpin'], $data['file'], $data['address'],$data['country'],$data['city'],$data['state'], $data['post_code']);
            $this->statement->execute();
             $this->statement->close();
       }

これが私の実際のコードです。

4

4 に答える 4

3

col3=? の後の「,」を削除します。

これにより、構文エラーが修正されます

于 2013-10-28T23:28:35.943 に答える
1
 $this->query = "UPDATE users SET col1=?, col2=?, col3=?, WHERE username='$username'";

余分なコンマがあります。これは、SQL が "WHERE" を別の列として読み取っていて、すべてが台無しになっていることを意味します。

 $this->query = "UPDATE users SET col1=?, col2=?, col3=? WHERE username='$username'";

うまくいくはずです。

以下のコメントへの回答として、これは正しい方法です。したがって、どこかで変数に問題があるはずです。どのようなエラー メッセージが表示されますか? (もしあれば)

バインドしているパラメーターの 1 つが文字列ではない可能性もあります。とにかく、もっと詳細な例が必要です。

于 2013-10-28T23:28:39.430 に答える
0

データベースに新しい値を入れるのと同じように機能すると思います。

行 mysql を php で更新する

于 2013-10-28T23:31:01.347 に答える