array dans mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : array dans mysql

Re: array dans mysql

par moogli » 26 avr. 2012, 10:37

mwé, pourquoi tu n'essai pas la concaténation ?

pour info, en SQL les chaines sont délimitées par des ' et non des " (même si parfois les deux sont autorisés).
Les chiffres n'ont pas a être entre '.
$sql = 'UPDATE news (lexiquefr, lexiquear) SET ("'.$lexiquefr[$key].'","'.$lexiquear[$key].'") WHERE id=7';
var_dump($sql);
Pour voir ce que cela donne.

@+

Re: array dans mysql

par metiti » 25 avr. 2012, 16:11

en modifiant le script en y ajoutant la sécurité sur le POST et en concatenant la requête. J'arrive à ça :
$lexiquefr = mysql_real_esacape_string($_POST['languefr']);
$lexiquear = mysql_real_esacape_string($_POST['languear']);
foreach ($lexiquefr as $key => $value)
{

$sql = sprintf('UPDATE news (lexiquefr, lexiquear) SET ("%s", "%s") WHERE id="7", '.$lexiquefr[$key].', '.$lexiquear[$key]);

$req=mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
}
Mais j'ai un retour d'erreur et je ne vois pas d'où cela peut provenir:
Erreur SQL !

Query was empty
Si je me trompe pas, le "%s" permet de savoir que l'on envoi une chaine de caractère (string) et ensuite les valeurs qui suivent sont justement les strings que l'on cherche à affecter à la chaîne.
Auriez, vous une idée?

Re: array dans mysql

par moogli » 24 avr. 2012, 18:12

Priori oui, il fait doublon avec le 1er tableau.


@+

Re: array dans mysql

par metiti » 24 avr. 2012, 16:37

C'est bien le $value qui est en trop?

Re: array dans mysql

par xTG » 24 avr. 2012, 16:05

Non il voulait dire que ton prototype de sprintf tient compte de deux paramètres (deux Strings) alors que tu lui passes trois variables.

Re: array dans mysql

par metiti » 24 avr. 2012, 16:03

Merci moogli pour ta réponse.

Effectivement pour la requête c'est bien un UPDATE ^^', et donc je modifie également le VALUE en SET.
Je n'oublierais pas d'ajouter un mysql_escape_string sur le $_POST ;) Merci du conseil.

Concernant la requête, je sais bien qu'il y a trop d'element, mais je ne vois pas comment faire autrement pour tout enregistrer dans la table :/

Re: array dans mysql

par moogli » 24 avr. 2012, 15:25

heu where ? sur un insert O_o c'est au minimum étonnant, si le tuple existe c'est un update ^^

tu met 32 arguments dans le sprintf alors qu'il n'y en a que deux dans la chaine de caractère.

utilise la concaténation et mysql_real_esacape_string :)


@+

array dans mysql

par metiti » 24 avr. 2012, 14:27

Bonjour,
Voilà j'ai un petit soucis pour enregistré un array dans mysql. Je sais que je peux utiliser (un)serialize ou implode/explode. J'aimerais avoir vos conseils pour ma requete.

Voilà mon tableau :

Code : Tout sélectionner

Array ( [tableau1] => Array ( [0] => valeur1 [1] => valeur3 ) [tableau2] => Array ( [0] => valeur2 [1] => valeur4 ) )
Je voudrais enregistrer dans la bdd, mes valeurs pour que je puisse les afficher ainsi :
Valeur1 - valeur2 <br />
valeur3 - valeur4
Ma question est la suivante, comment enregistrer dans la bdd, les valeurs dans l'ordre pour les resortir dans l'ordre également.
Je pense que ma requête pose problème, car elle ne prends en compte que les dernières valeurs (soit valeur3 et valeur 4).

Voici mon bout de code avec la requete sql
//variable au POST
$tableauun = $_POST['tableau1'];
$tableaudeux= $_POST['tableau2'];
//Foreach pour boucler sur les valeurs du tableau avec un sprintf pour garder plus facilement leurs type.
foreach ($lexiquefr as $key => $value)
{
$sql = sprintf('INSERT INTO news (tableauun, tableaudeux) VALUES ("%s", "%s") WHERE id="7" ', $value, $tableauun[$key], $tableaudeux[$key]);
$req=mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()); 
}
Merci de votre aide !