Problèmes INSERT dans la base de données

Répondre
Spikes6200
le 01/09/2010 à 16:35
Spikes6200
Voila, toute une journée que je me bats, et sans résultats, je reviens toujours à un message d'erreur à la fin :

C'est pour une mailing-list, j'ai donc une page d'inscription, qui est bien remis dans la page confirmation, mais, dans la procédure de INSERT, ça coince :
<?php 
include("connexion.php");

if ($POST['firstName'] != '') {
connexion();

$sql = "INSERT INTO maillist ('firstName','lastName','birthday','street','number','town','zip','email','cellularPhone') VALUES('$_POST[firstName]','$_POST[lastName]','$_POST[birthday]','$_POST[street]','$_POST[number]','$_POST[town]','$_POST[zip]','$_POST[email]','$_POST[cellularPhone]')";
mysql_query($sql) or die(mysql_error());
}
else
{
echo 'Erreur ! Encore !';
}
?>
Kalidor
le 01/09/2010 à 22:15
Kalidor
Salut
dans ta requete tu dois concatener tes variables exemple :

$_POST[firstName].','.$_POST[lastName].','.etc...

bon courage ++
Spikes6200
le 02/09/2010 à 08:28
Spikes6200
Merci, mais, toujours le code d'erreur ....
<?php 
include("connexion.php");

if ($POST['firstName'] != '') {
connexion();

$sql = "INSERT INTO maillist ('firstName','lastName','birthday','street','number','town','zip','email','cellularPhone') VALUES('.$_POST[firstName].','.$_POST[lastName].','.$_POST[birthday].','.$_POST[street].','.$_POST[number].','.$_POST[town].','.$_POST[zip].','.$_POST[email].','.$_POST[cellularPhone].')";
mysql_query($sql) or die(mysql_error());
}
else
{
echo 'Erreur ! Encore !';
}
?>
LA GLOBULE
le 02/09/2010 à 14:14
LA GLOBULE
<?php
$sql = "INSERT INTO maillist ('firstName', 'lastName', 'birthday', 'street', 'number', 'town', 'zip', 'email', 'cellularPhone') VALUES ('".mysql_real_escape_string($_POST['firstName'])."', '".mysql_real_escape_string($_POST['lastName'])."', '".mysql_real_escape_string($_POST['birthday'])."', '".mysql_real_escape_string($_POST['street'])."', '".mysql_real_escape_string($_POST['number'])."', '".mysql_real_escape_string($_POST['town'])."', '".mysql_real_escape_string($_POST['zip'])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_POST['cellularPhone'])."')";
?>


Ceci devrait mieux fonctionner.

Tu avais non seulement un soucis de concaténation, mais aussi et c'est plus grave, 2 autres soucis :
- tu ne protèges pas tes requetes SQL contre les injections : il faut pour cela utiliser mysql_real_escape_string
- $_POST['firstName'] est différent de $_POST[firstName] : dans le cas de $_POST[firstName], php va chercher si la constante firstName existe, et si oui, il va chercher dans le tableau $_POST si l'index prenant la valeur de la constante existe
Spikes6200
le 03/09/2010 à 11:33
Spikes6200
Merci, mais, plus de pessage d'erreur, et toujours rien dans ma base de données ????

voici le code :
<?
require("sec/connection_data.php");
require("sec/mysql_func.php");
connect();
$day = date("w");
$titre = 'Procedure maillist';
?>

<?php




$sql = "INSERT INTO maillist ('firstName', 'lastName', 'birthday', 'street', 'number', 'town', 'zip', 'email', 'cellularPhone') VALUES ('".mysql_real_escape_string($_POST['firstName'])."', '".mysql_real_escape_string($_POST['lastName'])."', '".mysql_real_escape_string($_POST['birthday'])."', '".mysql_real_escape_string($_POST['street'])."', '".mysql_real_escape_string($_POST['number'])."', '".mysql_real_escape_string($_POST['town'])."', '".mysql_real_escape_string($_POST['zip'])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_POST['cellularPhone'])."')";

?>
Spikes6200
le 03/09/2010 à 19:13
Spikes6200
Ben, j'en ai une qui commence au début : require("sec/mysql_func.php");. Tous mes requetes de publication sur la même base de données fonctionnent à merveille, il n'y a que l'ajout qui ne fonctionne pas :

<?                                      
// mysql_func.php3
/* Fonctions offrant une interface de base de données simple */
/* ---------------------------------------------------- */
function connect() {
global $MySQL_Host, $MySQL_User, $MySQL_Passw;
if (! $linkid=mysql_connect("$MySQL_Host","$MySQL_User","$MySQL_Passw")) {
echo "Impossible de se connecter à ",$MySQL_Host,"<br>";
exit;
}
return $linkid;
}
function createdb($db, $lkid) {
if (! $res=mysql_create_db($db, $lkid)) {
echo mysql_error($lkid);
exit;
}
return $res;
}
function send_sql($db, $sql) {
if (!$res=mysql_db_query($db, $sql)) {
mysql_db_query($db, "ROLLBACK");
echo mysql_error();
exit;
}
return $res;
}
function transaction_begin(){
mysql_db_query($db, "BEGIN");
}
function transaction_commit(){
mysql_db_query($db, "COMMIT");
}
?>
LA GLOBULE
le 03/09/2010 à 19:25
LA GLOBULE
Oui, ok, mais ce n'est pas parce que tu déclares une variable $sql que PHP va automatiquement lancer la requête.

Il faut lancer un mysql_query (ou une de tes fonctions) dessus.
Spikes6200
le 04/09/2010 à 09:00
Spikes6200
Merci pour votre aide, mais, comment dois-je faire cela dans ce cas de figure ?
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours