Je suis en train de coder ma première application php et je la base sur un tutoriel sur lequel je travaillais. Mon code fonctionne correctement jusqu'à ce que j'arrive à la requête $ var = $ connection-> ("INSERT INTO .... Etc
A ce stade, le code immédiatement après le premier $ s'affiche en clair . dans Firefox (google montre le tout sous forme de texte bla)
Je vais poster mon code ici.
<?php
$dbServername = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "cowboyserver";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword);
mysqli_select_db($dbName, $conn);
$email = ($_POST['email']);
if(!$conn){
echo 'error';
}else{
$query = $conn->query("INSERT INTO email_list (email) VALUES ('$email')");
}
mysqli_query($query);
header("Location: ../index.html?signup=success");
echo '<p>email entered !! ! ! ! ! ! !! !! ! ! ! ! !</p>' ;
de plus, voici le HTML::::
<form autocomplete="on" action="includes/signup.inc.php" method="POST">
<input type="email" name="email" placeholder="put your email here" class="blah"/>
</form>
EDIT : Après avoir essayé quelques solutions, j'ai trouvé que mon code php casse à un point apparemment aléatoire dans le code. Dans la deuxième réponse publiée, par exemple, le code php s'exécute jusqu'à ce qu'il arrive à "$ conn-> connect_error" dans l'instruction if, puis imprime tout après le -> au lieu de l'exécuter.
** ATTENTION **: Lorsque vous utilisez 'mysqli' vous devriez utiliser [requêtes paramétrées] (http://php.net/manual/fr/mysqli.quickstart.prepared-statements.php) et [' bind_param' ] (http://php.net/manual/fr/mysqli-stmt.bind-param.php) pour ajouter des données utilisateur à votre requête. ** N'utilisez PAS ** l'interpolation ou la concaténation de chaîne pour y parvenir car vous avez créé un [bogue d'injection SQL] grave (http://bobby-tables.com/). ** NE JAMAIS ** mettre directement dans une requête les données utilisateur '$ _POST',' $ _GET' ou ** tout **, cela peut être très dangereux si quelqu'un cherche à exploiter votre erreur. – tadman
Note: L'interface orientée objet de 'mysqli' est significativement moins verbeuse, ce qui facilite la lecture et l'audit du code, et n'est pas facilement confondue avec l'interface' mysql_query' obsolète. Avant de vous investir trop dans le style procédural, cela vaut la peine de changer. Exemple: '$ db = new mysqli (...)' et '$ db-> prepare (" ... ")' L'interface procédurale est un artefact de l'ère PHP 4 quand l'API 'mysqli' a été introduite et ne devrait pas être utilisée dans une nouvelle – tadman
Beaucoup de problèmes peuvent être détectés et résolus en [permettant des exceptions dans 'mysqli'] (https://stackoverflow.com/questions/14578243/turning-query-errors-to-exceptions-in-mysqli) donc des erreurs – tadman