2015-07-04 78 views
1

我有一個簡單的MYSQL數據庫,其中field_3是一個varchar鍵值。我正在嘗試將數據庫發佈更新爲兩個名爲start和end的TIME字段。無法使用PHP更新MYSQL

不過,我不斷收到此錯誤

注意:未定義的變量: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;'**。 (你會發現字符串和日期時間文字需要用一個SQL語句中的單引號括起來,它們看起來像代碼中的變量,但是在發送到數據庫的SQL文本中,它們是文字。)另外,** mysql **接口已棄用;新的開發應該使用** mysqli **或** PDO **。當它們被合併到SQL文本中時,可能不安全的值需要正確*轉義*。更好的模式是使用*準備好的語句*和*綁定佔位符*。 – spencer7593

回答

2

你缺少的end也值後面輸入一個空格,則需要使用類似下面的查詢報價來包裝你的變量。

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

但是,您的代碼容易受到SQL注入的影響。您確定準備好您的查詢,並且應該使用PDO或MySQLi擴展而不是舊的mysql_query擴展。

+0

它說數據更新成功,但由於某種原因,第二個值沒有發佈到我的數據庫。第二個值是$ emp_end。 – user3856234

1

你需要把你的PHP丘壑爲「」

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