php - MYSQL - 根据输入参数更新列的存储过程

标签 php mysql stored-procedures

我有一个简单的问题

我有 table :

| val | type | status |
|-----|------|--------|
|  90 |    1 |      a |

我想要一个存储过程,能够根据输入参数中给出的变量更新上面的表。

例如,也许在 PHP 中我有数组:

$data = ['val' => 80, 'status' => 'c']

我想将该数据发送到 mysql 存储过程,因此它知道需要将 val 更新为 80,将状态更新为“c”

或者另一个例子:

$data = ['type' => 1, 'nothing' => NULL, 'status' => NULL, 'val' => 77]

然后它将将类型更新为 1,将状态更新为 null,将 val 更新为 77 并忽略“无”

*$data 输入,不应硬编码在存储过程的输入参数中:D

这可以“简单地”完成吗?

谢谢!

最佳答案

比存储过程简单答案:

<?php

$data = ['val' => 80, 'status' => 'c'];

function auto($x){
$field_string ='';
$input_string='';
foreach  ($x as $userInfo=>$userInfo_value){
    if($userInfo_value !=''){
        echo $userInfo."->".$userInfo_value;
        if ($field_string == '') {
            $field_string = $field_string.$userInfo.' = '.$userInfo_value; 
        }
        else {
            $field_string = ','.$field_string.'='.$userInfo_value; 
        }
    }
}
$sql = "UPDATE protocole_test SET ".$field_string."WHERE (condition not specified in question) "; 
echo $sql ; //check query formed add a execution line after this

}

auto($data);
?>

说明:

这里我们创建一个 PHP 函数来处理您的数据数组并形成动态更新语句以使用所选数据更新所选字段。

为什么不使用存储过程?

1)存储过程存储在MYSQL引擎中

2) 它无法简单地处理动态、可变长度数据数组。

仍然如何做程序风格:

查看Passing string to Mysql Procedure .

算法:

1)在 php 的帮助下形成一个 quamma 分隔列表,如 -> key,value,key,value,如上面的 php 答案中所使用的;

2) 以 QCM 作为参数调用过程;

3)编辑程序更新字段(在答案中执行插入操作);

4)测试。

使用php函数的优点:

1) 很简单。 2)它满足了创建存储过程的所有目的。 3)也可以通过ajax调用。

非常感谢。

关于php - MYSQL - 根据输入参数更新列的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40346207/

相关文章:

php - 从 URL 获取 MySQL ID 以在页面上显示信息

mysql - 选择消息,计算平均票数并了解用户是否已经投票

php - Mysql 上的导航栏?还是坏主意?

php - 在 PHP 7.1.6 中使用 MongoDB\Driver 检查 mongodb 中是否存在集合

php - 如何循环最后插入的 id

mysql - 如何从两个表中获取不匹配的记录

bash - 从 PL/SQL Developer 和 SQL*plus 调用时,存储过程没有相同的结果

mysql - 从 ant 构建脚本运行 mysql 过程

sql - 如何执行 SQL 游标转换

PHP通过将天数添加到可变日期来计算 future 日期