我有一个简单的问题,
我有桌子:
| val | type | status |
|-----|------|--------|
| 90 | 1 | a |
我希望有一个存储过程能够根据输入参数中给出的变量更新上表。
例如,也许在PHP中我有数组:$data = ['val' => 80, 'status' => 'c']
我想将该数据发送到mysql存储过程,因此它知道它需要update val to 80 and status into 'c'
或其他例子:
$data = ['type' => 1, 'nothing' => NULL, 'status' => NULL, 'val' => 77]
然后它将update type to 1, status to null, val to 77 and ignore 'nothing'
* $ data输入,不应在存储过程中的输入参数中硬编码:D
这可以“简单地”完成吗?
谢谢!
答案 0 :(得分:0)
简单回答而不是存储过程:
<?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函数来处理你的DATA ARRAY并形成一个动态更新语句来更新所选数据的选择字段。
为什么不存储过程?
1)存储过程存储在MYSQL引擎
中2)它无法处理DYNAMIC,VARIABLE LENGTH数据阵列SIMPLY。
仍然如何做程序风格:
查看Passing string to Mysql Procedure。
Algorythem:
1)形成一个quamma seprated列表,如 - &gt;关键,值,键,值的帮助,如上面的PHP答案中使用的PHP;
2)以QCM作为参数调用过程;
3)编辑程序以更新字段(执行应答插入操作);
4)测试
使用php功能的优势:
1)它很简单。 2)它满足了制作存储程序的所有条款。 3)它也可以被ajax调用。非常感谢。