2016-05-17 168 views
0

我希望有人能指出我的錯誤與此更新,我嘗試過各種方式,但似乎無法得到它的工作,可能是一個簡單的錯誤,但我只是可以'似乎找不到它。php pdo更新與變量查詢

function set_live($row_id, $mobile_number) 
{ 
    global $conn; 
    $live = 1; 

    $sql = " 
    UPDATE 
     connections 
    SET 
     live = :live, 
     voice_number = :mobile_number 
    WHERE 
     id = :row_id"; 

    $stmt = $conn->prepare($sql); 
    $stmt->bindParam(':mobile_number', $mobile_number, PDO::PARAM_INT); 
    $stmt->bindParam(':row_id', $row_id, PDO::PARAM_INT); 
    $stmt->bindParam(':live', $live, PDO::PARAM_INT); 
    $stmt->execute(); 

    echo "Record edited successfully"; 
    $conn=null; 
} 

$conn是PDO連接與SELECT的等 所有變量都是數字和所有呼應行,所以在功能 我可以運行在phpMyAdmin實際值的查詢工作,它的工作原理確定

+0

如何調用'set_live'函數? – Saty

+0

你爲什麼使用'global'變量?你爲什麼不把它傳遞給那個方法,或者更好的是,如果你用它來操縱數據庫,那麼它會把它變成類的成員(當然,如果這是一個類)?乍一看,它似乎是好的(如果'$ conn'是你聲稱的那樣;你是否試圖轉儲'$ row_id'和'$ mobile_number'?你試過轉儲'$ conn'嗎? – DonCallisto

+0

你應該添加錯誤處理/讓PDO拋出異常。如果你在每次使用它時將它設置爲'null',你可能沒有數據庫連接... – jeroen

回答

1

只需更換這行

$stmt->bindParam(':mobile_number', $mobile_number, PDO::PARAM_INT); 

與此

$stmt->bindParam(':mobile_number', $mobile_number, PDO::PARAM_STR); 

因爲電話號碼長度比整數多。

+0

在我的情況下,我也曾在同一頁面中使$ conn變量爲null! – ruraldev

-1

爲什麼不嘗試使用數組?這種做法可能做的伎倆爲您提供:

<?php 
     function set_live($row_id, $mobile_number){ 
      global $conn; 
      $live = 1; 
      $sql = "UPDATE connections SET live=:live, voice_number=:mobile_number WHERE id=:row_id"; 
      $stmt = $conn->prepare($sql); 
      $params = array(
       "live"   =>$live, 
       "mobile_number" =>$mobile_number, 
       "row_id"  =>$row_id, 
      ); 

      $stmt->execute($params); 
      echo "Record edited successfully"; 
      $conn=null; 
     } 
+0

爲什麼這會比綁定個人價值更好?兩者都完全有效。 – jeroen

+0

@ jeroen它在哪裏說,這將**比上述帖子中的**更好?這裏是上述文章中唯一的句子:**爲什麼不使用數組?*** **這種方法可能會爲你做一些技巧:** ***哪裏有更好的比較或更糟糕的是在上面的聲明?*** – Poiz

+0

好吧,那麼它爲什麼會*做伎倆*? – jeroen