简体   繁体   English

使用 HTML 表格和 PHP 更新 MySQL

[英]Update MySQL using HTML Form and PHP

I've been looking through dozens of threads on here about this but have yet to find a solution.我一直在这里查看几十个线程,但尚未找到解决方案。

I've created a form that is supposed to show database table contents in input boxes, and when the content of the input boxes are changed and submitted the database is supposed to update.我创建了一个表单,应该在输入框中显示数据库表的内容,并且当输入框的内容发生更改并提交时,数据库应该会更新。

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

The forms show the content of the database fine, but upon updating I get this message: forms 正常显示数据库的内容,但更新后我收到此消息:

You have an error in your SQL syntax;您的 SQL 语法有误; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1查看与您的 MySQL 服务器版本对应的手册,了解在第 1 行的“1”附近使用的正确语法

I appreciate any help I can get on this.我很感激我能得到的任何帮助。

Use mysqli instead of mysql, and you need to pass the database name or schema: 使用mysqli而不是mysql,您需要传递数据库名称或模式:

before: 之前:

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

after: 后:

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

Update query may have some issues 更新查询可能存在一些问题

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

Please make sure that, your variable not having values with qoutes ( ' ), May be the query is breaking somewhere. 请确保您的变量没有带qoutes(')的值,可能是查询在某处断开。

echo the query and try to execute in phpmyadmin itself. 回显查询并尝试在phpmyadmin本身执行。 Then you can find the issues. 然后你可以找到问题。

You have already executed your query here 您已在此处执行了查询

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

So this line has the problem 所以这条线有问题

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

Try something like this: 尝试这样的事情:

$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

As a sidenote: MySQL_* extension is deprecated use MySQLi_* or PDO instead. 作为旁注:不推荐使用MySQL_ *扩展名使用MySQLi_ *或PDO。

Your sql is incorrect. 你的sql不正确。

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

only 只要

$sql = "UPDATE anstalld...

you have error in your sql syntax. 你的sql语法有错误。

please use this query and checkout. 请使用此查询和结帐。

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

Try it this way. 试试这种方式。 Put the table name in quotes (``). 将表名放在引号(``)中。 beside put variable '".$xyz."'. 旁边放变量'“。$ xyz。”'。

So your sql query will be like: 所以你的SQL查询将是:

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

First of all use mysqli_connect($dbhost,$dbuser,$dbpass,$dbname) 首先使用mysqli_connect($dbhost,$dbuser,$dbpass,$dbname)

Second - put mysqli_ everywhere instead of mysql_ 第二 - 把mysqli_放在各处而不是mysql_

Third - use this $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
第三 - 使用这个$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
$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

if Your data is being updated in your database but not in your table its because when you will click on update button, the request is made to the same file. 如果您的数据在数据库中更新但未在您的表中更新,因为当您单击更新按钮时,请求将发送到同一文件。 It first selects the data from the database when it is not updated prints it in the table and then update it according to the flow. 它首先从数据库中选择未更新的数据,将其打印在表中,然后根据流程进行更新。 If you have to update it as you click on update button then put this section 如果您在单击“更新”按钮时必须更新它,请放置此部分

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

}


?>`

after connecting with database. 连接数据库后。

First example does not require the accumulative kind of ordering.第一个例子不需要累积排序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM