6

私はこれについてここで何十ものスレッドを調べてきましたが、まだ解決策を見つけていません.

データベース テーブルの内容を入力ボックスに表示するフォームを作成しました。入力ボックスの内容が変更されて送信されると、データベースが更新されるはずです。

<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>

フォームにはデータベースのコンテンツが正常に表示されますが、更新すると次のメッセージが表示されます。

SQL 構文にエラーがあります。1 行目の「1」付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

これについて私が得ることができる助けに感謝します。

4

7 に答える 7

5

mysql の代わりに mysqli を使用し、データベース名またはスキーマを渡す必要があります。

前:

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

後:

$conn = mysql_connect($dbhost, $dbuser, $dbpass, $myDBname);
于 2013-09-25T02:05:09.333 に答える
2

更新クエリに問題がある可能性があります

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

変数に qoutes ( ' ) を含む値がないことを確認してください。クエリがどこかで壊れている可能性があります。

クエリをエコーし​​、phpmyadmin 自体で実行を試みます。その後、問題を見つけることができます。

于 2013-09-25T03:54:52.283 に答える
1

あなたのSQLは正しくありません。

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

それだけ

$sql = "UPDATE anstalld...
于 2016-09-29T09:22:40.963 に答える
0

このようにしてみてください。テーブル名を引用符 (``) で囲みます。変数 '".$xyz."' を置きます。

したがって、SQLクエリは次のようになります。

$sql = mysql_query("UPDATE `anstalld` SET mandag = "'.$mandag.'" WHERE namn =".$name)or die(mysql_error());
于 2016-08-10T13:10:47.023 に答える
0

SQL構文にエラーがあります。

このクエリとチェックアウトを使用してください。

$query = mysql_query("UPDATE `anstalld` SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn' ");
于 2014-09-20T08:34:48.197 に答える