我一直在寻找关于此的几十个主题,但尚未找到解决方案。
我创建了一个应该在输入框中显示数据库表内容的表单,当输入框的内容被更改并提交时,数据库应该更新。
<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”
我感谢任何帮助。
答案 0 :(得分:5)
使用mysqli而不是mysql,您需要传递数据库名称或架构:
之前:
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
后:
$conn = mysql_connect($dbhost, $dbuser, $dbpass, $myDBname);
答案 1 :(得分:2)
更新查询可能存在一些问题
$query = "UPDATE anstalld SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn' ";
echo $query;
请确保您的变量没有qoutes(')的值,可能是查询在某个地方破坏了。
回显查询并尝试在phpmyadmin中执行。然后你可以找到问题。
答案 2 :(得分: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 代替。
答案 3 :(得分:1)
你的sql不正确。
$sql = mysql_query("UPDATE anstalld....
仅
$sql = "UPDATE anstalld...
答案 4 :(得分:0)
你的sql语法有错误。
请使用此查询和结帐。
$query = mysql_query("UPDATE `anstalld` SET mandag = '$mandag', tisdag = '$tisdag', onsdag = '$onsdag', torsdag = '$torsdag', fredag = '$fredag' WHERE namn = '$namn' ");
答案 5 :(得分:0)
以这种方式试试。将表名放在引号(``)中。 旁边放变量&#39;&#34;。$ xyz。&#34;&#39;。
所以你的SQL查询将是:
$sql = mysql_query("UPDATE `anstalld` SET mandag = "'.$mandag.'" WHERE namn =".$name)or die(mysql_error());
答案 6 :(得分:0)
是的,SQL查询中有错误。 尝试
$sql = mysql_query("UPDATE `anstalld` SET mandag = "'.$mandag.'" WHERE namn =".$name)or die(mysql_error());
您的SQL update query 应该正确,
答案 7 :(得分: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";
}
?>`
连接数据库后。