2017-08-11 1 views
0

J'ai une forme reg utilisateur qui insère ensuite dans la db mais son lancer une erreur de param bindbind_param question PHP préparé Insérer déclaration

if(isset($_POST['submit'])){ 
// Login Query 
// Connection 
$mysqli = new mysqli("localhost", "root", "", "pg"); 
if ($mysqli->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
} 
// Query 
$query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
$stmt = $mysqli->prepare($query); 
$stmt->bind_param('ssssssssssssss',$_POST['affname'],$_POST['title'],$_POST['fname'],$_POST['lname'],$_POST['add1'],$_POST['add2'],$_POST['add3'],$_POST['city'],$_POST['county'],$_POST['country'],$_POST['pcode'],$_POST['email'],$_POST['password'],$_POST['paymethod']); // If 2x Variables are used etc 's' would become 'ss',$_GET['VAR'],$_GET['VAR'] 
// Bind Results 
$stmt->execute(); 
//$result = $stmt->get_result()->fetch_all(); 
} 

Je ne peux pas travailler sur ce qui est mal quelqu'un peut aider grâce


Mise à jour le formulaire de requête & code

 <form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
    <p> 
    <label for="textfield"></label> 
    <input type="text" name="affname" id="textfield" /> 
    </p> 
    <p> 
    <label for="textfield"></label> 
    <input type="text" name="title" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="fname" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="lname" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="add1" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="add2" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="add3" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="city" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="county" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="country" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="pcode" id="textfield" /> 
    </p> <p> 
    <label for="textfield"></label> 
    <input type="text" name="email" id="textfield" /> 
    </p> 
    <p> 
    <label for="textfield"></label> 
    <input type="text" name="password" id="textfield" /> 
    </p> 
    <p> 
    <label for="textfield"></label> 
    <input type="text" name="paymethod" id="textfield" /> 
    <input type="hidden" value="" name="aid" /> 
    </p> 
    <p> 
    <input type="submit" name="submit" id="submit" value="Submit" /> 
    </p> 
    </form> 
    <?php 
    if(isset($_POST['submit'])){ 
    // Login Query 
    // Connection 
    $mysqli = new mysqli("localhost", "root", "", "pg"); 
    if ($mysqli->connect_errno) { 
     echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; 
    } 
    // Query 
    $query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
    $stmt = $mysqli->prepare($query); 
    $stmt->bind_param('sssssssssssssss',$_POST['aid'],$_POST['affname'],$_POST['title'],$_POST['fname'],$_POST['lname'],$_POST['add1'],$_POST['add2'],$_POST['add3'],$_POST['city'],$_POST['county'],$_POST['country'],$_POST['pcode'],$_POST['email'],$_POST['password'],$_POST['paymethod']); // If 2x Variables are used etc 's' would become 'ss',$_GET['VAR'],$_GET['VAR'] 
    // Bind Results 
    $stmt->execute(); 
    //$result = $stmt->get_result()->fetch_all(); 
    } 

J'ai modifié la requête et ont maintenant la bonne quantité de vars étant passé Cependant, il montre maintenant AUCUNE erreur mais aussi ne pas insérer les données

+1

Et le message d'erreur est? –

+0

Que SQL n'est pas valide, votre préparation échoue probablement. Je peux deviner l'erreur. '(,?,?,?,?,?,?,?,?,?,?,?,?,?,?' parenthèses manquantes et quelque chose après l'ouverture –

Répondre

0

En tant que votre aide est autocremented il suffit de changer la requête à cela, pas besoin de insérez-le dans la requête.

$query = "INSERT INTO affiliates (affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
+0

Ajout d'un crochet de fermeture (repéré après avoir collé code) L'aide est également une valeur d'incrémentation automatique qui ne sera pas transmise dans la requête, donc le? Encore besoin d'être présent? – Chris

+0

Ok, si l'aide est autocrement pas besoin d'insérer, laissez SQL faire le travail. requête à la requête mise à jour que j'ai posté –

+0

Parfait merci ... ne sais pas pourquoi mais quand j'ai quitté le $ _POST ['aide'] dans même si t ne passait pas de données la requête ne fonctionnerait tout simplement pas dès que je Enlevez-le de la requête et les paramètres enregistrés cela fonctionne bien C'était frustrant! Merci :) – Chris

1

changement

$query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 

à:

$query = "INSERT INTO `affiliates` (aid,affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (NULL,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 

ou

$query = "INSERT INTO `affiliates` (affname,title,fname,lname,add1,add2,add3,city,county,country,pcode,email,password,paymethod) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
0

vous essayez d'insérer 15 colonnes

1) aide

2) affname

3) Titre

4) FNAME

5) lName

6) add1

7) ADD2

8) add3

9) ville

10) commune

11) pays

12) pcode

13) email

14) Mot de passe

15) PayMethod

but here you are metioning only 14 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 
,?,?,?,?,?,?,?,?,?,?, ?, ?, ?, ? 
s s s s s s s s s s s s s s 

aussi bien qu'ici seulement 14

$ _POST [ 'affname'], $ _ POST [ 'title'], $ _ POST [ » fname '], $ _ POST [' nom '], $ _ POST [' add1 '], $ _ POST [' add2 '], $ _ POST [' add3 '], $ _ POST [' ville '], $ _ POST [' comté ' ], $ _ POST ['pays'], $ _ POST ['pcode'], $ _ POST ['email'], $ _ POST ['mot de passe'], $ _ POST ['paymethod']

+0

J'ai donné la requête mise à jour etc. bien qu'aucune erreur ne soit maintenant montrée mais rien ne soit stocké – Chris