【发布时间】:2015-07-04 23:24:52
【问题描述】:
我有一个简单的 MYSQL DB,其中 field_3 是一个 varchar 键值。我正在尝试将数据库发布更新到两个名为 start 和 end 的 TIME 字段。
但是我一直收到这个错误
注意:未定义变量:第 25 行 C:\xampp\htdocs\b1\update.php 中的 empd_end 无法更新数据:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ':12:00, end = WHERE field_3 = Berkay_Sebat@yahoo.com' 附近使用正确的语法
<html>
<head>
<title>Update a Record in MySQL Database</title>
</head>
<body>
<?php
if(isset($_POST['update']))
{
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$emp_id = $_POST['emp_id'];
$emp_salary = $_POST['emp_salary'];
$emp_end= $_POST['emp_end'];
$sql = "UPDATE usezas ".
"SET start = $emp_salary, end = $empd_end".
"WHERE field_3 = $emp_id" ;
mysql_select_db('db1');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully\n";
mysql_close($conn);
}
else
{
?>
<form method="post" action="<?php $_PHP_SELF ?>">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">EMAIL</td>
<td><input name="emp_id" type="text" id="emp_id"></td>
</tr>
<tr>
<td width="100">Start TIME</td>
<td><input name="emp_salary" type="text" id="emp_salary"></td>
</tr>
<tr>
<td width="100">END TIME</td>
<td><input name="emp_end" type="text" id="emp_end"></td>
</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
}
?>
</body>
</html>
【问题讨论】:
-
对于 SQL 语句的调试问题,您可以在提交到数据库之前
echo $sql;。 (您会发现,在 SQL 语句中,字符串和日期时间文字需要用单引号括起来。这些看起来像代码中的变量,但在您发送到数据库的 SQL 文本中,它们是文字。)此外,不推荐使用 mysql 接口;新开发应使用 mysqli 或 PDO。当潜在的不安全值被合并到 SQL 文本中时,需要正确转义。更好的模式是使用 prepared statements 和 bind placeholders。
标签: php mysql forms sql-update