Question

J'ai un formulaire simple qui insère des données dans une table sur mon serveur.J'ai configuré un utilisateur spécial pour gérer cela, avec des autorisations d'insertion uniquement.J'obtiens des erreurs de connexion et de syntaxe.

Voici mon formulaire:

<form id="form1" name="form1" method="post" action="mailform.php" onsubmit="return validateForm();">

    <input type="text" id="First" maxlength="100" autocorrect placeholder="First name" />
    <input type="text" id="Last" maxlength="100" autocorrect placeholder="Last name" />
    <input type="text" id="Email" maxlength="100" autocorrect placeholder="Email address" />
    <select name="SalesPerson">
        <option value="SP1">SP1</option>
        <option value="SP2">SP2</option>
        <option value="SP3">SP3</option>
        </select>
    <select name="Show">
        <option value="Show1">Show1</option>
        <option value="Show2">Show2</option>
        </select>

        <button type="submit" id="submit" class="oneup">Submit</button>

</form>

et plus sur mailform.php nous avons:

<?php

    $name = "xxx_xxx";
    $name = mysql_real_escape_string($name);
    $SQL = "SELECT * FROM users WHERE username = '$name'";

$con = mysql_connect("localhost","xxx_xxx","xxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("xxx_x", $con);

$sql="INSERT INTO email_signup (First, Last, Email, SalesPerson, Show)
VALUES
('$_POST[First]','$_POST[Last]','$_POST[Email]','$_POST[SalesPerson]','$_POST[Show]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }

mysql_close($con)
?>

Et voici les erreurs -

Warning: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: Access denied for user 'xxx'@'localhost' (using password: NO) in <b>.../mailform.php</b> on line 28

Warning: mysql_real_escape_string() [<a href='function.mysql-real-escape-string'>function.mysql-real-escape-string</a>]: A link to the server could not be established in <b>.../mailform.php</b> on line 28 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Show) VALUES ('','','','SP1','Show1')' at line 1

Une idée des raisons pour lesquelles j'ai des problèmes de connexion?J'ai un formulaire presque identique mis en place dans un autre endroit qui fonctionne très bien.

Était-ce utile?

La solution

Commencez par établir votre connexion, puis exécutez mysql_real_escape_string (), puis votre requête.mysql_real_escape_string () se connecte en fait à la base de données pour la laisser échapper à votre chaîne.Si vous n'avez pas de connexion, cela ne fonctionnera pas

Autres conseils

Essayez de mettre la connexion en premier.

$con = mysql_connect("localhost","xxx_xxx","xxxxxxxxx");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }


 $name = "xxx_xxx";
    $name = mysql_real_escape_string($name);
    $SQL = "SELECT * FROM users WHERE username = '$name'";

Remarque: Cette réponse ne tente pas de résoudre une vulnérabilité majeure d'injection SQL.Pour une discussion plus approfondie, lisez les commentaires sous la question.

Afficher est un mot réservé

Utiliser

$sql="INSERT INTO email_signup (`First`, `Last`, `Email`, `SalesPerson`, `Show`)
VALUES
('$_POST[First]','$_POST[Last]','$_POST[Email]','$_POST[SalesPerson]','$_POST[Show]')";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top