web-dev-qa-db-fra.com

Mettre à jour MySQL en utilisant HTML Form et PHP

J'ai parcouru des dizaines de sujets à ce sujet, mais je n'ai pas encore trouvé de solution.

J'ai créé un formulaire censé afficher le contenu de la table de la base de données dans les zones de saisie. Lorsque le contenu des zones de saisie est modifié et soumis, la base de données doit être mise à jour.

<html>
<head>
</head>
<body>

<?php

$dbhost = '****';
$dbuser = '****';
$dbpass = '****';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
mysql_select_db('****');

$query = "SELECT * FROM anstalld";
$result = mysql_query($query) or die(mysql_error());

?>


<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>

<?php 

while($row = mysql_fetch_array($result))
            {

$namn = $row['namn'];
$mandag = $row['mandag'];
$tisdag = $row['tisdag'];
$onsdag = $row['onsdag'];
$torsdag = $row['torsdag'];
$fredag = $row['fredag'];
?>


<td width="100"></td>
<td><?=$namn?></td>
</tr>
<tr>
<td width="100">Mandag</td>
<td><input name="mandagid" type="text" value="<?=$mandag?>"></td>
</tr>
<tr>
<td width="100">Tisdag</td>
<td><input name="tisdagid" type="text" value="<?=$tisdag?>"></td>
</tr>
<tr>
<td width="100">Onsdag</td>
<td><input name="onsdagid" type="text" value="<?=$onsdag?>"></td>
</tr>
<tr>
<td width="100">Torsdag</td>
<td><input name="torsdagid" type="text" value="<?=$torsdag?>"></td>
</tr>
<tr>
<td width="100">Fredag</td>
<td><input name="fredagid" type="text" value="<?=$fredag?>"></td>
</tr>
<?php } ?>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="update" type="submit" id="update" value="Update">
</td>
</tr>
</table>
</form>



<?php

if(isset($_POST['update']))
{

$namn = $_POST['namnid'];
$mandag = $_POST['mandagid'];
$tisdag = $_POST['tisdagid'];
$onsdag = $_POST['onsdagid'];
$torsdag = $_POST['torsdagid'];
$fredag = $_POST['fredagid'];

$sql = mysql_query("UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn'");

$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully\n";

}


?>
</body>
</html>

Les formulaires montrent bien le contenu de la base de données, mais lors de la mise à jour, le message suivant s'affiche:

Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel que correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de '1' à la ligne 1

J'apprécie toute aide que je peux obtenir à ce sujet. 

6
user2052849

Utilisez mysqli au lieu de mysql, et vous devez passer le nom de la base de données ou le schéma:

avant:

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

après:

$conn = mysql_connect($dbhost, $dbuser, $dbpass, $myDBname);
5
Undefined Behavior

Requête de mise à jour peut avoir quelques problèmes 

$query = "UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn' ";
echo $query;

Assurez-vous que votre variable n'a pas de valeur avec qoutes ('), la requête est peut-être en train de tomber en panne 

renvoie la requête et essaie de l'exécuter dans phpmyadmin lui-même. Ensuite, vous pouvez trouver les problèmes. 

2
Shafeeque

Votre sql est incorrect.

$sql = mysql_query("UPDATE anstalld....

seulement

$sql = "UPDATE anstalld...
1
user3510431

Vous avez déjà exécuté votre requête ici

$sql = mysql_query("UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn'");

Donc, cette ligne a le problème

$retval = mysql_query( $sql, $conn ); //$sql is not a query its a result set here

Essayez quelque chose comme ça:

$sql = "UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn'";    
$retval = mysql_query( $sql, $conn ); //execute your query

Sidenote: l'extension MySQL_ * est obsolète, utilisez MySQLi_ * ou PDO .__ au lieu.

1
Konsole

Essayez de cette façon. Mettez le nom de la table entre guillemets (``) . À côté de la variable ''. $ Xyz. ".

Donc, votre requête SQL sera comme:

$sql = mysql_query("UPDATE `anstalld` SET mandag = "'.$mandag.'" WHERE namn =".$name)or die(mysql_error());
0
Nirav Patel

Oui, vous avez une erreur dans la requête SQL. Essayez 

$sql = mysql_query("UPDATE `anstalld` SET mandag = "'.$mandag.'" WHERE namn =".$name)or die(mysql_error());

Votre requête de mise à jour SQL devrait être correcte,

0
Vishal Rana

vous avez une erreur dans votre syntaxe SQL.

veuillez utiliser cette requête et passer à la caisse.

$query = mysql_query("UPDATE `anstalld` SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn' ");
0
hassan gul