2014-05-21 58 views
0

我試着寫一個存儲過程來代替下面的查詢,使用PHP編碼沿整個查詢低於編寫存儲過程來檢索數據

$sql = "SELECT name, bachelor FROM boys WHERE id=$ID;"; 
     $result = mysql_query($sql, $connect); 

     while ($row = mysql_fetch_array($result)) { 
      $obj->names = $row['name']; 
      $obj->bachelors = $row['bachelor']; 
     } 

     return $obj; 

以下是我嘗試檢索數據表

+----+-----------+-------+ 
| id | name  | bachelor | 
+----+-----------+-------+ 
| 1 | fred  | 1 | 
| 2 | trumen | 0 | 
| 3 | pat  | 0 | 
| 4 | Mark  | 1 | 
| 5 | Chris  | 1 | 
+----+-----------+-------+ 

當前即時通過數據庫查詢檢索複選框的值以確定它是否是單身漢​​和名稱。我現在面臨的問題是我無法通過存儲過程來做同樣的事情。因此,任何人都可以幫助我解決這個問題?

我的失敗存儲過程是存儲過程以下

mysql> DELIMITER $$ 
mysql> CREATE PROCEDURE GetAllBoys() 
    -> BEGIN 
    ->  SELECT * FROM boys; 
    -> END 
    -> $$ 
+1

您可以更改存儲過程的查詢。而且,當您可以使用查詢有效地完成工作時,不需要爲此制定相應的過程。 –

回答

0

返回值沒有結果集。 您可以在這個方向上做的最大努力是使用多維數組作爲您的過程的結果(如果您認爲這更容易處理)。

0

如果您想檢查輸入ID的人是否是單身漢​​,您必須將其作爲輸入參數傳遞給存儲過程。
相應地更改SP。

CREATE PROCEDURE GetAllBoys(IN _id INT) 
     SELECT name, bachelor FROM boys WHERE ID = _id; 

我建議你Prepared Statement去與SQL查詢綁定的輸入值。

$stmt = $mysqli->prepare("call GetAllBoys(?)"); 
$stmt->bind_param("i", $ID); 
$stmt->execute(); 
$res = $stmt->get_result(); 
$row = $res->fetch_assoc(); 
+0

謝謝大家......我完成了......你的回答非常有幫助 –