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.
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);
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.
Votre sql est incorrect.
$sql = mysql_query("UPDATE anstalld....
seulement
$sql = "UPDATE anstalld...
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.
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());
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,
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' ");