Inserta matriz php en la tabla mysql

Actualización: Olvidé mencionar que echo $matstring produce '65.70', 'Coles','34 days','14' – ¿cuál parece ser la syntax correcta?

Soy un novato de php / mysql, y creo que esto es bastante básico, pero después de haber leído todas las otras preguntas de stackoverflow sobre este tema y tocar varias versiones de mi código durante varias horas, no puedo entender lo que estoy haciendo. incorrecto. Agradecería cualquier ayuda / sugerencia.

Objetivo: pasar datos de mi matriz php ( $matrix ) a una tabla mysql

 $matrix[1]= ( [0] => 65.70 [1] => Coles [2] => 34 days [3] => 14 ) $matrix[2]= ( [0] => 62.70 [1] => Coles [2] => 13 days [3] => 14 ) $matrix[3]= ( [0] => 12.70 [1] => Safeway [2] => 43 days [3] => 14 ) 

Código:

 $matstring=implode("','",$matrix[1]); $matstring="'".$matstring."'"; mysql_query('INSERT INTO Australia (Price, Company, Days, Weight) VALUES ('$matstring')'); 

cuando ejecuto este código:

 $matrix = array(); $matrix[1] = array( 0 => 65.70, 1 => 'Coles', 2 => '34 days', 3 => 14 ); $matstring=implode("','",$matrix[1]); $matstring="'".$matstring."'"; print "INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ($matstring)"; 

convertirse en resultado:

 INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ('65.7','Coles','34 days','14') 

Código corregido:

 $matstring=implode("','",$matrix[1]); mysql_query("INSERT INTO Australia (Price, Company, Days, Weight) VALUES ('$matstring')"); 

(es decir, eliminar la segunda línea del código original y poner comillas dobles alrededor del argumento de mysql_query)

Apreciar la ayuda del usuario1847757: como señaló, $matstring sí era correcto, pero las comillas simples dentro de VALUES(' ') se unían a las comillas simples agregadas a $matstring en la 2da línea de mi código original, lo que resulta en VALUES(''65.70','Coles','34 days','14'')

Gracias a todos por su ayuda y sugerencias

estás construyendo la consulta equivocada. se verá así:

 INSERT INTO ... VALUES (''65.70,Coles,34 days,14''); 

observe cómo los 4 valores están dentro de una cadena ÚNICA … pero la cadena también es incorrecta ( '' ).

necesita citar cada valor individual de la matriz:

 ('65.70', 'Coles', '34 days', '14') 

ENTONCES lo implotas, dándote

 INSERT INTO ... VALUES ('65.70', 'Coles', etc...) 
 mysql_query("INSERT INTO Australia (`Price`, `Company`, `Days`, `Weight`) VALUES ($matstring)"); 

Hoy me enfrenté a un problema similar y lo resolví así: en mi caso $bank_info es una matriz que contiene los datos para insertar como una nueva fila …

 $sql = "INSERT INTO user_bank_info (user_id, name, address, ZIP, city, state, country, wat_id, bank_bic, account_iban) VALUES ('$id_user', '{$bank_info['name']}', '{$bank_info['addr']}', '{$bank_info['zipn']}', '{$bank_info['city']}', '{$bank_info['stat']}', '{$bank_info['ctry']}', '{$bank_info['watn']}', '{$bank_info['bbic']}', '{$bank_info['iban']}')"; 

Use la función de serialización para agregar datos de matriz a la tabla. Ex-

 $array["a"] = "Foo"; $array["b"] = "Bar"; $array["c"] = "Baz"; $array["d"] = "Wom"; $str = serialize($array); 

agregue $str into table . Cuando obtengamos datos, utilice la función unserialize.Ex- $arr = unserialize(urldecode($strenc));

Nota: Para URL, use la función urldecode .

Así es como lo hago (muy simple):

 //Fetch the original array: $query = mysql_query("SELECT * FROM Original_Table") or die(mysql_error()); while($record = mysql_fetch_array($query)){ $num=count($record); //Count The Number Of elements in the array $num=$num/2; //use this if the array has both key numbers AND names $cnum=0; for($cnum;$cnum< $num;$cnum++){ //cycle through the elements of the array $entry=$entry."'".$record[$cnum]."',"; } $entry=substr($entry,0,strlen($entry)-1);// this just removes the final comma // Now we can add the entry into the new table: mysql_query("insert into New Table (Field1, Field2,Field3.....etc) values($entry)")or die(mysql_error()); }//end while