У меня есть простая база данных MYSQL, где field_3 - значение ключа varchar. Я пытаюсь обновить отправку базы данных до двух полей TIME, называемых start и end.Не удается обновить MYSQL с помощью PHP
Однако я получаю эту ошибку
Примечание: Undefined переменной: empd_end в C: \ XAMPP \ HTDOCS \ b1 \ update.php на линии 25 Не удалось обновить данные: У вас ошибка в вашей Синтаксис SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «: 12: 00, конец = WHERE field_3 = [email protected]» в строке 1
<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;' ** перед отправкой в базу данных. (Вы обнаружите, что строки и литералы datetime должны быть заключены в одинарные кавычки в инструкции SQL. Они выглядят как переменные в вашем коде, но в тексте SQL, который вы отправляете в базу данных, это литералы.) Кроме того, ** интерфейс mysql ** устарел; новая разработка должна использовать либо ** mysqli **, либо ** PDO **. Потенциально небезопасные значения должны быть правильно * экранированы *, когда они включены в текст SQL. Лучше всего использовать * подготовленные операторы * с * bind placeholders *. – spencer7593