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 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“1”附近使用正确的语法

我很感激我能得到的任何帮助。

4

7 回答 7

5

使用 mysqli 代替 mysql,并且需要传递数据库名称或架构:

前:

$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 = mysql_query("UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn'");

所以这条线有问题

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

尝试这样的事情:

$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

作为旁注:不推荐使用 MySQL_* 扩展,而是使用 MySQLi_* 或 PDO。

于 2013-09-25T03:56:37.923 回答
1

你的sql不正确。

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

只要

$sql = "UPDATE anstalld...
于 2016-09-29T09:22:40.963 回答
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 回答
0

首先使用 mysqli_connect($dbhost,$dbuser,$dbpass,$dbname)

第二 -mysqli_到处放而不是mysql_

第三 - 使用这个 $sql = "UPDATE anstalld SET mandag = '.$mandag.', tisdag = '.$tisdag.', onsdag = '.$onsdag.', torsdag = '.$torsdag.', fredag = '.$fredag.' WHERE namn = '.$namn.'";
$retval = mysqli_query( $conn, $sql ); //execute your query

如果您的数据正在您的数据库中更新,但没有在您的表中更新,因为当您单击更新按钮时,会向同一个文件发出请求。它首先从数据库中选择数据,当它没有更新时,将其打印到表中,然后根据流程进行更新。如果您必须在单击更新按钮时对其进行更新,请放置此部分

<?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";

}


?>`

连接数据库后。

于 2018-10-17T15:59:29.367 回答
0

试试这个方法。将表名放在引号 (``) 中。旁边放变量 '".$xyz."'。

所以你的 sql 查询会是这样的:

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