Mpampinos Holmens
Mpampinos Holmens

Reputation: 1937

Insert into mysql and php using array

I have part of the code below:

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);

}

The query doesn't seem to work. Any clues? I think it's a problem with the quotes or something. How can actually pass array elements?

here is my whole code i want to move one row to another table

$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);
                  }
            }
          }

Upvotes: 1

Views: 1134

Answers (2)

Kaii
Kaii

Reputation: 20550

I see several issues with your query code

  1. escaping of the array indexes in your string:

    you can either end the string and concatenate the parts together:

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

    or use the {$var} syntax:

    $second_query = "INSERT INTO " . TBL_USERSDONTPAY . 
                    " VALUES ('{$array['username']}', '{$array['password']}', '0', '{$array['userid']}')";
    
  2. missing spaces (see example code above .. you were missing the spaces before and after the table name)

  3. missing field names. your query may work without if you specify all fields in the right order, but will fail misteriously when you alter the table later (e.g. add a field to the table)

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

    please note you should actually insert the correct field names in the second line of my example above. You can find more information on this in the MySQL docs for INSERT

Upvotes: 2

Luke Pittman
Luke Pittman

Reputation: 843

You need to clean that query up and remove the final comma.

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

Upvotes: 3

Related Questions