2013-06-25 83 views
-1

一些ONW可否請您解釋一下什麼是錯這個......這個工作完全罰款程序PHP查詢是沒有得到執行

function foo(){ 
    $incomingtime = date('Y-m-d H:i:s', time()); 
    $stmt = $db->stmt_init(); 
    $id = "Abc123" ; 
    $u_id = 1; 
    $c_id = 1; 
    $query = "INSERT INTO table (indate, myid, uniqueid, commonid) 
       VALUES (?, ?, ?, ?)"; 
    $stmt = $db->prepare($query); 
    $stmt->bind_param('ssii', $incomingtime, $id, $u_id, $c_id); 

    $stmt->execute(); 
    printf("Affected rows (UPDATE): %d\n", $db->affected_rows); // Always return 1 
    $stmt->close(); 
} 

但沒有進入到數據庫中。

數據類型在MySQL數據庫的銦酸是datetime

+0

你所說的「程序PHP」的意思是,你能不能給我們所謂的工作代碼 – Jaay

+1

'$ stmt'≠'$ stmt_4' – Benoit

+0

與程序我的意思PHP4和MySQL連接器 – Nikhil

回答

3

有與此代碼的幾個問題。

  1. $stmt_4在它被定義之前被使用。
  2. $u_id$c_id都被定義爲不使用。
  3. 試圖在不提供參數的情況下執行$stmt
  4. $db未定義。
  5. $id未定義。

如果您試圖將工作代碼轉換爲函數,請確保函數將這些函數作爲參數傳入,它們將被標記爲全局函數或函數創建/檢索它們。

+0

嗨jim ...我編輯了...考慮$ db以及在我的代碼中定義的... 現在可以建議我使用工作解決方案 – Nikhil

+0

@Nikhil,you不要在這個範圍內設置$ db。如果它在此函數之外定義,則必須在此範圍內使其可用 - f.e.通過使用_global_定義。 http://www.php.net/manual/en/language.variables.scope.php – SimonSimCity

+0

我試圖使$ db爲全球,但仍然沒有用... 有人可以給我一個簡短的工作片段如何編寫適當的sql查詢涉及datetime數據類型作爲列值....我剛開始使用mysqli ... – Nikhil

0

檢查變化:

$query = "INSERT INTO table (indate, myid, uniqueid, commonid) 
      VALUES (?, ?, ?, ?)"; 
$stmt = $db->prepare($query); 
$stmt->bind_param('ssii', $incomingtime, $id, $u_id, $c_id); 
$u_id = 1; 
$c_id = 1; 
$stmt->execute(); 

到:

$u_id = 1; 
$c_id = 1; 

$query = "INSERT INTO table (indate, myid, uniqueid, commonid) 
      VALUES (CURRENT_TIMESTAMP, ?, ?, ?)" 
$stmt = $db->prepare($query); 
$stmt->execute(array($id, $u_id, $c_id)); 

注:我刪除了參數ssii,因爲它沒有在查詢中考慮。它只需要4個參數。

+0

你的代碼給了我: 警告:mysqli_stmt :: execute()期望只有0個參數,1中給出...... – Nikhil

+0

你是否有權在該表中插入該用戶/密碼? – maqjav

+0

是的....我有權限...我沒有使用日期的其他查詢工作正常 – Nikhil