pdo mysql存储过程_用PHP PDO执行MySQL存储过程

我有一个问题可能很简单,你们大多数人。我正在尝试第二次与PDO并且有同样的问题。

我有2个类和一个数据库登录功能:

class SiteTemplatesController{

public $Model;

public function __construct(){

$this->Model = new SiteHelperTemplatesModel();

}

public function __destruct(){

unset($this->Model);

}

private function siteHelperTemplateSave(){

$this->Model->saveTag($_POST['name'], $_POST['tag'], $_POST['type'], $_POST['sort']);

}

}

}

class SiteHelperTemplatesModel{

private $pdo;

public function __construct(){

include '../../mod/db.php';

$this->pdo = DbPdoLogin();

}

public function __destruct(){

unset($this->pdo);

}

public function saveTag($name, $tags, $type, $sort){

/* FIXME: problem

$statement='CALL siteHelperTagSave("'.$name.'","'.$tags.'","'.$type.'",'.$sort.');';

$result=$this->pdo->exec($statement);

echo "Result: ".$result;

*/

$stmt=$this->pdo->prepare("CALL siteHelperTagSave(:name, :tags, :type, :sort)");

$stmt->bindParam(':name', $name);

$stmt->bindParam(':tags', $tags);

$stmt->bindParam(':type', $type);

$stmt->bindParam(':sort', $sort);

$stmt->execute();

$stmt->closeCursor();

}

}

function DbPdoLogin($DBHost=DB_HOST, $DBName=DB_NAME, $DBLogin=DB_LOGIN, $DBPass=DB_PASS){

try{

$pdo = new PDO('mysql:host='.$DBHost.';dbname='.$DBName, $DBLogin, $DBPass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_AUTOCOMMIT=>FALSE));

}

catch(PDOException $eLogon){

echo "

Communication error
".$eLogon."
";

}

$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

return $pdo;

}问题是它不起作用;)

我试图用不同的方式去做,但它永远不会起作用,每次都没有错误。该语句在具有静态值的mysql中工作,但不在php中。

也许问题出在我的PDO连接登录功能上?

我究竟做错了什么?

- 编辑

现在我看到这个问题与INSERT和PDO有关。

当我将声明更改为:

$statement="

INSERT INTO `pomocnik`(`name`, `tags`, `type`, `sort`)

VALUES ('".$name."','".$tags."','".$type."',".$sort.")";它也不起作用。

如果我回显语句,值是可见的:

INSERT INTO `pomocnik`(`name`, `tags`, `type`, `sort`)

VALUES ('test bio 15','test bio 15','bio',96)那么,我在做什么与PDO插入错误?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值