2012-07-12 1 views
1

J'ai un fichier Excel que je dépouille dans AIR et la conversion en chaîne délimitée $. J'envoie cette chaîne à PHP ($pushFinal), puis j'utilise $array = explode("$",$pushFinal); pour convertir la chaîne en tableau. Maintenant, je veux faire une boucle dans le tableau, en insérant les valeurs dans SQL, imitant le format Excel. Chaque "ligne" dans Excel est de 49 colonnes, ou "valeurs", j'ai donc besoin d'insérer 49 valeurs à la fois à partir du $array pour chaque ligne dans SQL.PHP - boucle à travers tableau et insérer des valeurs à SQL

Quelle est la meilleure façon de faire cela?

Je suis une recrue si aie pitié de moi :)

Alors, j'ai essayé ceci:

$pushFinal = $_POST["pushFinal"]; 
$lines = array(); 
$lines = explode("|",$pushFinal); 
$lineItems = array(); 


foreach ($lines as $val){ 
    $lineItems = explode("$",$val); 
    $temp = ""; 
    foreach($lineItems as $val2){ 
     $temp = $temp."'".$val2."',"; 
    } 
    $sql="insert into OPS_SCHEDULE values($temp)"; 
    $stmt = sqlsrv_query($conn,$sql); 
} 

L'INSERT échoue cependant. Cela semble-t-il correct? J'ai délimité chaque ligne d'Excel avec | puis délimité chaque valeur de cette ligne par $. Cela s'affiche correctement dans $ pushFinal.

+0

Ne vaudrait-il pas mieux, par exemple, le convertir en une chaîne avec des lignes délimitées par un caractère et des colonnes délimitées par un autre? De cette façon, vous pouvez simplement exploser une fois pour obtenir vos lignes et à nouveau pour obtenir les valeurs dans la ligne. –

+0

J'ai essayé votre suggestion mais mon INSERT échoue. Est-ce que mon code est correct? – ellis

+1

Même si vous effectuez un traitement, vous insérez toujours du texte presque brut dans vos chaînes de requête, ce qui signifie que vous êtes vulnérable aux [attaques par injection SQL] (http://bobby-tables.com). Avant d'aller plus loin avec ce code, vous devriez lire à leur sujet. –

Répondre

0

OK, je l'ai eu.

$pushFinal = $_POST["pushFinal"]; 
$lines = array(); 
$lines = explode("|",$pushFinal); 
$lineItems = array(); 

foreach ($lines as $val){ 
    $lineItems = explode("$",$val); 
    $temp = ""; 
    foreach($lineItems as $val2){ 
     $temp = $temp."'".$val2."',"; 
    } 
    $temp = substr($temp, 0, -1); 
    $sql ="insert into table values($temp)"; 
    $stmt = sqlsrv_query($conn,$sql); 
} 

J'ai dû enlever la fuite "" de chaque ligne $temp. Merci "lc" pour m'avoir aidé à délimiter les lignes séparément des valeurs. Cela a fonctionné comme un charme.

0

Il suffit de lire n'importe quelle page d'introduction PHP/MySQL de base sur Internet et vous aurez le code terminé en un rien de temps. En supposant que vous avez déjà la configuration de la base de données :)

1
foreach($array as $val){ 
    $sqlVals[]="'".$val."'"; 
} 
$sqlValsStr = implode(",",$sqlVals); 
$sql = "insert into table values(".$sqlValsStr.")"; 
Questions connexes