2014-09-26 67 views
0

我正在嘗試使用準備好的查詢,但此代碼無法正常工作,它只是第一次使用prepare()。評論拳頭if()什麼都不做,現在它在第二。沒有連接問題/沒有錯誤,只是卡住了。準備好的查詢不起作用PHP

如果我只使用mysqli_query()來完成所有工作,那麼所有工作都很好。

function addUser($id){ 
/* 
    if ($stmt = $this->mysqli->prepare("SELECT * FROM Users WHERE ID = ?")){ 

    if (!($stmt->bind_param("s", $id))){ 
     return false; 
    } 

    if ($stmt->execute()) { 
     if ($stmt->num_rows!=0){ 
     return false; 
     } 

    }else{ 
     return false; 
    } 

    }else{ 
    return false; 
    }*/ 

    if ($stmt = $this->mysqli->prepare("INSERT INTO Users VALUES (?, '')")) { 

    if (!$stmt->bind_param("s", $id)) { 
     return false; 
    } 

    if (!$stmt->execute()) { 
     return false; 
    } 

    return true; 
    } 

    return false; 

} 

和有關調試,如果我改變這樣

function addUser($id){ 
    echo "1"; 
    if ($stmt = $this->mysqli->prepare("SELECT * FROM Users WHERE ID = ?")){ 
    echo "2"; 
    if (!($stmt->bind_param("s", $id))){ 
     return false; 
    } ... 

    }else{ 
    echo "3"; 
    } ... 

的代碼,我會看到只有「1」的頁面上。類的

開始:

class db{ 
    private $mysqli; 

    function __construct($ip, $login, $password, $database){ 
     $this->mysqli = new mysqli($ip, $login, $password, $database) or die("Problem with DB connection!"); 
     $this->mysqli->set_charset("utf8"); 
    } 
+0

單'='你分配一個值,雙您比較。哎呀,別介意,誤解你的代碼 – RST 2014-09-26 21:10:53

+0

我建議你實際檢查並註銷你的錯誤。目前,您的代碼在數據庫交互中完全沒有錯誤處理。 – 2014-09-26 21:11:00

+2

@RST在這種情況下需要一個'='。 – 2014-09-26 21:13:26

回答

0

你永遠不​​所以什麼都不會發生,因此沒有錯誤將提高。

這裏是我會怎麼寫呢:

function addUser($id){ 
    if ($this->mysqli->connect_errno) { 
     die('Connect Error: ' . $this->mysqli->connect_errno); 
    } 
    if ($stmt = $this->mysqli->prepare("INSERT INTO Users VALUES (?, '')")) { 
     $stmt->bind_param("s", $id);//did you mean i for type int ? 
     $stmt->execute();//dont forget this!! 
    }else{ 
     die('Connect Error: ' . $this->mysqli->connect_errno); 
    } 

    return ($stmt->rowCount() > 0)? true : false; 

} 
+0

我稍後在函數 – 2014-09-26 22:09:59

+0

中執行,除非你自己返回'$ stmt',否則你不能這樣做。這是毫無意義的 – meda 2014-09-26 22:23:47

+0

@ user3830889爲什麼不在那裏執行它?如果您想稍後執行它,請返回該對象或使用像您這樣的屬性來建立連接 – meda 2014-09-26 22:51:11