2012-06-19 98 views
1

我有下面的代碼的一部分:插入MySQL和PHP的使用數組

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); 
        } 
      } 
      } 
+3

更多這方面的信息,看起來: ......「INSERT INTO」 .TBL_USERSDONTPAY」 VALUES ... – Andrew

+0

你應該更新你的問題,以反映該查詢現在的工作,但實際上並沒有插入一行。 – Kaii

回答

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. 缺少的字段名。您的查詢可能工作,如果你指定要在正確的順序所有字段,而,但是當你後來改變表將misteriously失敗(如字段添加到表)

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

    請注意,您應該實際插入正確的場在我上面的例子的第二行中的名稱。像你需要一些空間,你可以找到在MySQL docs for INSERT

+0

,它不能通過該行的代碼,如果($結果&& $ result-> NUM_ROWS == 1)有啥這一問題 –

+0

感謝,我會解決這些問題 –

+0

@MpampinosHolmens可能有同一個用戶名多行返回 - ?您檢查'NUM_ROWS ==難道1'你做s用戶名是'UNIQUE'使用表定義中的唯一鍵?檢查你的數據。 – Kaii

3

你需要清除該查詢,並取下最後一個逗號。

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

確定現在這是確定的查詢工作,但做一些expiriments我發現後並沒有改變我的usersdontpay表 –