2013-01-09 52 views
0

我是新來的PHP。 通常我的更新查詢正在工作,只有在這個塊導致查詢失敗,我從之前確定的$_SESSION[id]和從之前的表單獲得的職員值爲contact_id
請幫助...爲什麼我的更新查詢在我的php失敗?

<?php 
$server="localhost"; 
$db_user="root"; 
$pass="h6194v"; 
$db="my_db"; 
$koneksi=mysql_connect($server,$db_user,$pass) 
    or die ("Connection Error!!"); 
$dateline=date("Ymd"); 
$query="UPDATE `contact` SET `date`=\'$dateline\', `officer`=\'$_SESSION[id]\' WHERE `contact_id`=\'$_POST[no]\'"; 
$result=mysql_query($query) or die ("Query fail"); 
?> 
+0

您是否收到'Query fail'錯誤? – Sahal

+0

無需轉義單引號。 – keyboardSmasher

+0

另外,停止使用mysql_ *並且不要將會話變量傳遞給sql語句。哎呀! – keyboardSmasher

回答

-1

更改您的update這樣的查詢

$query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION[id]."' 
WHERE `contact_id`=".$_POST[no]; 

如果contact_id是字符串,做這樣的

$query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION[id]."' 
WHERE `contact_id`='".$_POST[no]."'"; 
+0

只需要知道爲什麼把這個減號? – Sahal

+0

我已經嘗試了鱈魚,但仍然返回查詢失敗消息 – user1960274

+0

這是不公平的,你必須相應地改變。可以'回聲'查詢並粘貼在這裏? – Sahal

0

我格式化您的查詢,試試這個。

$query="UPDATE `contact` SET `date`='{$dateline}', `officer`='{$_SESSION['id']}' WHERE `contact_id`='{$_POST['no']}'"; 

注意:不要使用MySQL函數,它們不推薦使用PDO或MySQLi函數。你的代碼是開放的SQL注入嘗試添加驗證或使用準備好的語句來保護。

0

試試這個 -

$query="UPDATE `contact` SET `date`='".$dateline."', `officer`='".$_SESSION['id']."' WHERE `contact_id`='".$_POST['no']."'"; 

但是,使用查詢或任何之前驗證$_POST$_GET

0

這將有助於知道你得到什麼樣的錯誤。

  1. 不要將用戶輸入或會話變量直接放入查詢中,您應該首先對它們進行消毒處理,或許使用預處理語句。
  2. 當你得到這樣的錯誤時,試着使用var_dump和die去看看發生了什麼。即在查詢var_dump($ _ SESSION ['id'])之前。 (現在我寫了,我看到你沒有在你的數組索引上引用,這將導致問題。

你需要用引號訪問你的數組:$ _SESSION ['id'],$ _POST [「不」]

2

首先

請不要使用mysql_ *函數的新代碼。他們不再保持和社區已經開始deprecation process。見red box?相反你應該瞭解prepared statements並使用PDOMySQLi。如果你不能決定,this article將有助於選擇。如果你在意學習,這裏是good PDO tutorial

除此之外,如果你使用mysql:

  1. 選擇一個數據庫,你做與mysql_select_db($db,$koneksi)或使用數據庫名稱表中的名稱前面的UPDATE語句一樣UPDATE my_db.contact ...
  2. 修復連接後您的UPDATE語句如其他人所建議
  3. 使用正確格式的日期date('Y-m-d')或更好,但完全丟棄它並在您的UPDATE語句中使用NOW()
+0

感謝您的幫助...... – user1960274