I've got the following script that uses PDO.
$db = new PDO("mysql:host=$hostname;dbname=$database", $username, $password);
$sql = "BEGIN;\n".
"INSERT INTO exp_ws_gk_text (WGT_PRG_CODE, WGT_TEXT)\n".
" VALUES('".$_POST['prg_code']."', ".$db->quote($_POST['text']).");\n" .
"SELECT @Lid:=LAST_INSERT_ID();\n" .
"INSERT INTO exp_ws_gk_state (WGS_STATE, WGS_TYPE, WGS_WGT_RID)\n".
" VALUES('".$_POST['state']."', ".$_POST['type'].", @Lid);\n".
"SELECT a.wgt_prg_code prg_code, b.wgs_state state, b.wgs_type type, a.wgt_rid id, a.wgt_text text\n".
" FROM exp_ws_gk_text a\n".
" JOIN exp_ws_gk_state b ON b.wgs_wgt_rid = a.wgt_rid\n".
" WHERE b.wgs_wgt_rid = @Lid ORDER BY a.wgt_prg_code;\n".
"COMMIT;\n";
$fp = fopen("/var/tmp/save_gatekeeper.txt", "a");
fwrite($fp, "SQL:". $sql."\n");
try {
$res = $db->prepare($sql);
$res->execute();
$error = $db->errorInfo();
fwrite($fp, "ErrorInfo:".print_r($error, true)."\n\n");
fwrite($fp, "Row: ".print_r($res->fetch(PDO::FETCH_ASSOC), true)."\n\n");
fwrite($fp, "Row2: ".print_r($res->fetch(PDO::FETCH_LAZY),true)."\n\n");
}
catch (PDOException $e) {
fwrite($fp, "ExceptionInfo:".print_r($e, true)."\n\n");
}
fclose($fp);
echo json_encode($res->fetch(PDO::FETCH_ASSOC););
This is what the log produced:
SQL:BEGIN;
INSERT INTO exp_ws_gk_text (WGT_PRG_CODE, WGT_TEXT)
VALUES('EDS', '[h3]IMPORTANT INFORMATION[/h3][p]This is a test gatekeeper for [b]Eddie\'s[/b] Classroom Course[/p]');
SELECT @Lid:=LAST_INSERT_ID();
INSERT INTO exp_ws_gk_state (WGS_STATE, WGS_TYPE, WGS_WGT_RID)
VALUES('AL', 1, @Lid);
SELECT a.wgt_prg_code prg_code, b.wgs_state state, b.wgs_type type, a.wgt_rid id, a.wgt_text text
FROM exp_ws_gk_text a
JOIN exp_ws_gk_state b ON b.wgs_wgt_rid = a.wgt_rid
WHERE b.wgs_wgt_rid = @Lid ORDER BY a.wgt_prg_code;
COMMIT;
ErrorInfo:Array
(
[0] => 00000
)
Row:
Row2:
I'm not sure why it isn't reporting any kind of error or exception. This is the first time I'm using PDO. I converted from using the older mysql calls.
Can someone help out here?
I'm expecting the results from the last select to be sent back, all I get is "false";