编写存储过程以检索数据

时间:2014-05-21 10:14:53

标签: php mysql sql stored-procedures

我试图编写一个存储过程来替换下面的查询,整个查询以及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 
    -> $$

2 个答案:

答案 0 :(得分:0)

存储过程的返回值不是结果集。 你可以在这个方向上做的最大努力是使用多维数组作为你的程序的结果(如果你认为这更容易处理)。

答案 1 :(得分: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();