1

以下のコードの一部があります。

while($array = $result->fetch_assoc() ){


    $second_query = "INSERT INTO".TBL_USERSDONTPAY."VALUES ($array[\"username\"], $array[\"password\"], '0',$array[\"userid|\"], )";

$second_result = $database->query($second_query);

}

クエリが機能していないようです。手がかりはありますか?引用符か何かの問題だと思います。実際に配列要素を渡すにはどうすればよいですか?

これが私のコード全体で、ある行を別のテーブルに移動したい

$q = "SELECT * FROM ".TBL_USERS." WHERE username = '$subuser'"; 
          $result = $database->query($q); 

          if($result && $result->num_rows == 1){
              while($array = $result->fetch_assoc() ){
                  $second_query = "INSERT INTO" . TBL_USERSDONTPAY . "VALUES ('" . $array['username'] . "', '" . $array['password'] . "', '0', '" . $array['userid'] ."')";


                  $second_result = $database->query($second_query);
                  if($second_result){
                      // it worked!
                      $q = "DELETE FROM ".TBL_USERS." WHERE username = '$subuser'";
                      $database->query($q);
                  }
            }
          }
4

2 に答える 2

3

そのクエリをクリーンアップして、最後のコンマを削除する必要があります。

$second_query = "INSERT INTO " . TBL_USERSDONTPAY . " VALUES ('" . $array['username'] . "', '" . $array['password'] . "', '0', '" . $array['userid'] . "')";
于 2012-06-19T19:40:06.850 に答える
2

クエリ コードにいくつかの問題があります

  1. 文字列内の配列インデックスのエスケープ:

    文字列を終了して、パーツを連結することができます。

    $second_query = "INSERT INTO " . TBL_USERSDONTPAY . 
                    " VALUES ('" . $array['username'] . "', '" . $array['password'] . "', '0', '" . $array['userid'] . "')";
    

    または次の{$var}構文を使用します。

    $second_query = "INSERT INTO " . TBL_USERSDONTPAY . 
                    " VALUES ('{$array['username']}', '{$array['password']}', '0', '{$array['userid']}')";
    
  2. スペースがありません (上記のコード例を参照してください。テーブル名の前後にスペースがありません)

  3. フィールド名がありません。すべてのフィールドを正しい順序で指定した場合、クエリは機能しませんが、後でテーブルを変更すると (テーブルにフィールドを追加するなど) 不思議なことに失敗します。

    $second_query = "INSERT INTO " . TBL_USERSDONTPAY . 
                    " (username, password, foo, user_id)".
                    " VALUES ('{$array['username']}', '{$array['password']}', '0', '{$array['userid']}')";
    

    上記の例の 2 行目に正しいフィールド名を実際に挿入する必要があることに注意してください。詳細については、INSERTの MySQL ドキュメントを参照してください。

于 2012-06-19T20:09:49.113 に答える