2012-06-19 74 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表 –