【问题标题】:Writing a stored procedure to retrieve data编写存储过程来检索数据
【发布时间】:2014-05-21 10:14:52
【问题描述】:

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

【问题讨论】:

  • 您可以在存储过程中更改您的查询。并且无需为相同的过程制定程序,而您可以通过查询有效地完成工作。

标签: php mysql sql stored-procedures


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果要检查输入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();
    

    【讨论】:

    • 谢谢大家……我搞定了……你的回答很有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 2019-08-04
    • 2013-05-31
    • 2018-05-15
    相关资源
    最近更新 更多