我有一个问题可能很简单,你们大多数人。我正在尝试第二次与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 "
".$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插入错误?