[英]Call SQL Server 2008 Stored Procedure from PHP passing in Parameters
[英]How to call a stored procedure in SQL Server with parameters from PHP
我使用 Codeigniter,这就是我在 MySQL 中调用存储过程的方式:
public function InsertDataSistra($NumPart, $typeChild){
$sql = $this->db->query("CALL PYCC_InsertDataSistra('$NumPart', '$typeChild')");
}
但是我需要在 SQL 服务器中调用一个带参数的存储过程。 我在 SQL 服务器中的 SP 是:
CREATE PROCEDURE CantidadReal_PRMS
@NumPart VARCHAR(25) = NULL,
@HOUSE VARCHAR(15) = NULL,
@LBAIS FLOAT(45) = NULL,
@LBROW FLOAT(45) = NULL,
@LBTIR FLOAT(45) = NULL
...
那么这个SP的调用是什么?
public function PzRealesPRMS($NumPart, $House, $LBAIS, $LBROW, $LBTIR){
$sql = $this->db->query("EXEC CantidadReal_PRMS ???????????????");
}
在 SQL 语句中注入值使您的方法对可能的 SQL 注入开放。 您可以尝试使用查询绑定或准备好的查询。 在这两种情况下,查询生成器和数据库连接都会处理 escaping 数据:
使用查询绑定的语句:
public function PzRealesPRMS($NumPart, $House, $LBAIS, $LBROW, $LBTIR) {
$sql = $this->db->query(
"EXEC CantidadReal_PRMS @NumPart = ?, @HOUSE = ?, @LBAIS = ?, @LBROW = ?, @LBTIR = ?",
[$NumPart, $House, $LBAIS, $LBROW, $LBTIR]
);
}
使用准备好的查询语句:
public function PzRealesPRMS($NumPart, $House, $LBAIS, $LBROW, $LBTIR) {
$query = $this->db->prepare(function($db) {
$sql = "EXEC CantidadReal_PRMS @NumPart = ?, @HOUSE = ?, @LBAIS = ?, @LBROW = ?, @LBTIR = ?";
return (new Query($db))->setQuery($sql);
});
$results = $query->execute($NumPart, $House, $LBAIS, $LBROW, $LBTIR);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.