2015-07-04 2 views
1

У меня есть простая база данных 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> 
+0

Для отладки проблем с операторами SQL вы можете ** 'echo $ sql;' ** перед отправкой в ​​базу данных. (Вы обнаружите, что строки и литералы datetime должны быть заключены в одинарные кавычки в инструкции SQL. Они выглядят как переменные в вашем коде, но в тексте SQL, который вы отправляете в базу данных, это литералы.) Кроме того, ** интерфейс mysql ** устарел; новая разработка должна использовать либо ** mysqli **, либо ** PDO **. Потенциально небезопасные значения должны быть правильно * экранированы *, когда они включены в текст SQL. Лучше всего использовать * подготовленные операторы * с * bind placeholders *. – spencer7593

ответ

2

У вас не хватает места после значения end также, вам нужно будет обернуть переменные с кавычками как ниже запроса.

$sql = "UPDATE usezas ". 
     "SET start = '$emp_salary', end = '$empd_end' ". 
     "WHERE field_3 = $emp_id" ; 

Однако ваш код уязвим для инъекций SQL. Вы наверняка подготовите свой запрос и должны использовать расширения PDO или MySQLi, а не прежнее расширение mysql_query.

+0

В нем говорится, что данные обновляются успешно, но по какой-то причине второе значение не отправляется в мой db. Второе значение - $ emp_end. – user3856234

1

вам нужно поставить РНР Vals к «»

$sql = "UPDATE usezas ". "SET start = '$emp_salary', end = '$empd_end'". " WHERE field_3 = '$emp_id'" ;

Смежные вопросы