php - 调用存储过程以带参数更新表 PHP MySQL

标签 php mysql

使用参数调用 SELECT 语句非常棒,并且使生活编码变得如此整洁。当我想使用 UPDATE 语句更新数据库中的数据时,我的问题就出现了。

我有包含 UPDATE 语句的存储过程,类似于下面的

CREATE DEFINER = 'myuser'@'%'
PROCEDURE sp_upd_planning (
  IN prop_id int(11),
  IN planned_date varchar(15), 
  IN time_slot int(11),
  IN by_who int(11),
  IN cost decimal(15,2),
  IN complete_date varchar(15),
  IN lastupd_user varchar(100))
BEGIN
 UPDATE planning
   SET
     Status = CASE 
                  WHEN CompleteDate IS NOT NULL THEN 4 
                  WHEN PlannedDate IS NULL THEN 2 
                  WHEN PlannedDate IS NULL AND CompleteDate IS NULL THEN 3 
                END
    ,PlannedDate = planned_date
    ,BookingDate = NOW()
    ,TimeSlot = time_slot
    ,ByWho = by_who
    ,Cost = epc_cost
    ,Complete = CASE WHEN CompleteDate IS NOT NULL THEN 1 ELSE 0 END
    ,CompleteDate = complete_date
    ,LastUpdateDate = NOW()
    ,LastUpdateUser = lastupd_user
  WHERE PropID = prop_id;
END

当我运行 CALL sp_upd_planning(paramters here); 时,该语句可以正常工作;在数据库中。

我使用表单提交,我已将相关字段发布到变量中,在我的连接中,我再次调用存储过程,就像以前在数据库中一样,我使用变量来匹配所需的参数,如下所示(是的,我知道它正在使用 mysql_,但我想快速测试,所以我使用了这个)

mysql_query("CALL sp_upd_planning('$planned', '$timeslot', '$bywho', '$cost', '$completed', '$inputby', $propid)") or die(mysql_error());

当代码执行时,一切看起来都很好,没有错误,主表单按照我设置的 jquery 提交,但是当我检查数据库时,没有任何更新。

为什么会这样?

最佳答案

听起来您没有执行您的语句。在 PHP 中,您仍然需要在创建后执行该语句。另外,如果我没记错的话,绑定(bind)参数而不是在字符串中传递参数会更安全。尝试这样的事情:

$conn = new mysqli("mysql:host=$host;dbname=$dbname", $username, $password);
// execute the stored procedure
$sql = "CALL sp_upd_planning(:planned, :timeslot, :bywho, :cost, :completed, :inputby, :propid)";
$stmt = $conn->prepare($sql);

$stmt->bindParam('datatypes', $planned, $timeslot, $bywho, $cost, $completed, $inputby, $propid);
$stmt->execute();

基本上,通过术语数据类型,我们假设planned是一个字符串,timeslot是一个日期/时间,bywho是一个字符串,cost是一个int,completed是一个int,inputby是一个string,propid是一个int,那么它会说“sdsiisi”

关于php - 调用存储过程以带参数更新表 PHP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23831931/

相关文章:

php加速器评论

php - 我升级到 FQL 到 Graph API - 我是否正确使用它?

php - CakePHP 管理面板

java - 如何在几毫秒内将数千条记录更新到 MySQL 数据库中

mysql - 使用 MySQL 将单元格值转换为列

php - 200k 页面网站的网站搜索

php - fatal error : Call to a member function get_results() on a non-object (jQuery From Plugin & WordPress)

php - REST API——Javascript 还是 PHP?

php - 如果id在序列中,MySql获取行

MySQL 比较起始位置不同的变量