przejdę od razu do rzeczy ...
korzystam sobie z PDO i chcąc zrobić sobie taki patent:
Kod
try{
$sql = "INSERT INTO content(idContent, modContent, aliasContent) VALUE(:nid, :mod, :alias); INSERT INTO meta(idMeta, titleMeta, descriptionMeta, keywordsMeta) VALUE(:nid, :mtitle, :mdesc, :mkeys); INSERT INTO normalContent(idContent, dateContent, titleContent, descriptionContent) VALUE(:nid, :date, :title, :desc)";
$this->_dbh->beginTransaction();
$stmt = null;
$stmt = $this->_dbh->prepare($sql);
$stmt->bindParam(":nid", $nid, PDO::PARAM_INT, 3);
$stmt->bindParam(":mod", $return_tab['modules_alias'], PDO::PARAM_STR, 32);
$stmt->bindParam(":alias", $this->_createAlias(trim($_POST['title'])), PDO::PARAM_STR, 255);
$stmt->bindParam(":mtitle", trim($_POST['mtitle']), PDO::PARAM_STR, 255);
$stmt->bindParam(":mdesc", trim($_POST['mdescription']), PDO::PARAM_STR, 255);
$stmt->bindParam(":mkeys", trim($_POST['mkeywords']), PDO::PARAM_STR, 255);
$stmt->bindParam(":date", trim($_POST['date']), PDO::PARAM_STR, 20);
$stmt->bindParam(":title", trim($_POST['title']), PDO::PARAM_STR, 255);
$stmt->bindParam(":desc", trim($_POST['content']), PDO::PARAM_STR);
$stmt->closeCursor();
$stmt->execute();
$this->_dbh->commit();
}
catch(Exception $e){
$return_tab['system_error'] = $e->getMessage();
}
$sql = "INSERT INTO content(idContent, modContent, aliasContent) VALUE(:nid, :mod, :alias); INSERT INTO meta(idMeta, titleMeta, descriptionMeta, keywordsMeta) VALUE(:nid, :mtitle, :mdesc, :mkeys); INSERT INTO normalContent(idContent, dateContent, titleContent, descriptionContent) VALUE(:nid, :date, :title, :desc)";
$this->_dbh->beginTransaction();
$stmt = null;
$stmt = $this->_dbh->prepare($sql);
$stmt->bindParam(":nid", $nid, PDO::PARAM_INT, 3);
$stmt->bindParam(":mod", $return_tab['modules_alias'], PDO::PARAM_STR, 32);
$stmt->bindParam(":alias", $this->_createAlias(trim($_POST['title'])), PDO::PARAM_STR, 255);
$stmt->bindParam(":mtitle", trim($_POST['mtitle']), PDO::PARAM_STR, 255);
$stmt->bindParam(":mdesc", trim($_POST['mdescription']), PDO::PARAM_STR, 255);
$stmt->bindParam(":mkeys", trim($_POST['mkeywords']), PDO::PARAM_STR, 255);
$stmt->bindParam(":date", trim($_POST['date']), PDO::PARAM_STR, 20);
$stmt->bindParam(":title", trim($_POST['title']), PDO::PARAM_STR, 255);
$stmt->bindParam(":desc", trim($_POST['content']), PDO::PARAM_STR);
$stmt->closeCursor();
$stmt->execute();
$this->_dbh->commit();
}
catch(Exception $e){
$return_tab['system_error'] = $e->getMessage();
}
dostaję błąd: [system_error] => SQLSTATE[HY000]: General error: 2013 Lost connection to MySQL server during query
i teraz dodam, że jeśli robię dwa inserty w transakcji to nie ma tego błędu ale jak już 3 to lipa ...
szukałem trochę po google no i znalazłem coś takiego:
http://umc.ustu.ru/mirror/php_documentatio...losecursor.html
no ale niestety sam closeCursor nie pomaga ...
próbowałem użyć tego:
Kod
<?php
/**
* @param PDOStatement $oStm
*/
public static function closeCursor($oStm) {
do $oStm->fetchAll();
while ($oStm->nextRowSet());
}
?>
/**
* @param PDOStatement $oStm
*/
public static function closeCursor($oStm) {
do $oStm->fetchAll();
while ($oStm->nextRowSet());
}
?>
ale nie do konca wiem ajki parametr dać jako $oStm ...
ma ktoś pomysł jak usunąć mój problem
