PHP PDO MySQL没有异常或错误
我有以下使用PDO的脚本PHP PDO MySQL没有异常或错误,php,mysql,pdo,Php,Mysql,Pdo,我有以下使用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
$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););
这是日志生成的内容:
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:
我不知道为什么它没有报告任何类型的错误或异常。这是
我第一次使用PDO。我使用旧的mysql调用进行了转换
有人能帮忙吗
我期待最后一次选择的结果被发回,我得到的只是“false” 由于在多个查询中使用预处理语句,因此需要使用模拟预处理语句。指 否则,我相信您正在执行的唯一事情就是
BEGIN代码>
在我个人看来,我认为将多个查询放在一个PDO语句中是不好的做法。您应该考虑使用一个和多个语句,它允许您更容易地找出哪一个查询会引起问题,如果出现错误,则回滚。
其次,您正在使用准备好的语句,但仍然没有保护自己免受SQL注入的影响。不要在prepare()中使用$\u POST。您应该在准备语句后绑定这些语句。因为您将准备语句用于多个查询,所以需要使用模拟的准备语句。指
否则,我相信您正在执行的唯一事情就是BEGIN代码>
在我个人看来,我认为将多个查询放在一个PDO语句中是不好的做法。您应该考虑使用一个和多个语句,它允许您更容易地找出哪一个查询会引起问题,如果出现错误,则回滚。
其次,您正在使用准备好的语句,但仍然没有保护自己免受SQL注入的影响。不要在prepare()中使用$\u POST。您应该在准备语句后绑定这些语句。因为您将准备语句用于多个查询,所以需要使用模拟的准备语句。指
否则,我相信您正在执行的唯一事情就是BEGIN代码>
在我个人看来,我认为将多个查询放在一个PDO语句中是不好的做法。您应该考虑使用一个和多个语句,它允许您更容易地找出哪一个查询会引起问题,如果出现错误,则回滚。
其次,您正在使用准备好的语句,但仍然没有保护自己免受SQL注入的影响。不要在prepare()中使用$\u POST。您应该在准备语句后绑定这些语句。因为您将准备语句用于多个查询,所以需要使用模拟的准备语句。指
否则,我相信您正在执行的唯一事情就是BEGIN代码>
在我个人看来,我认为将多个查询放在一个PDO语句中是不好的做法。您应该考虑使用一个和多个语句,它允许您更容易地找出哪一个查询会引起问题,如果出现错误,则回滚。
其次,您正在使用准备好的语句,但仍然没有保护自己免受SQL注入的影响。不要在prepare()中使用$\u POST。您应该在准备好声明后绑定它们。干杯,我们在聊天中解决了这个问题
你混合了多种类型的陈述。您需要将查询分为两个单独的查询;一个是使用$res->query
插入,然后验证响应,另一个是使用$res->fetch()
或$res->fetchAll()
干杯,我们在聊天中解决了这个问题
你混合了多种类型的陈述。您需要将查询分为两个单独的查询;一个是使用$res->query
插入,然后验证响应,另一个是使用$res->fetch()
或$res->fetchAll()
干杯,我们在聊天中解决了这个问题
你混合了多种类型的陈述。您需要将查询分为两个单独的查询;一个是使用$res->query
插入,然后验证响应,另一个是使用$res->fetch()
或$res->fetchAll()
干杯,我们在聊天中解决了这个问题
你混合了多种类型的陈述。您需要将查询分为两个单独的查询;一个使用INSERT
和$res->query
,然后验证响应,另一个使用使用$res->fetch()
或$res->fetchAll()选择
这是您应该使用fetchAll
的情况吗?不知道,因为这是第一次使用PDO。如果要拉入多个数据库行,您希望使用fetchAll
而不是fetch
。如果要返回单个特定行(通过唯一键或主键),请使用fetch
。使用fetchAll()
仅返回空数组。我知道那张唱片被插入了。哦,对不起。您正在执行插入操作,而不是选择操作。我应该多加注意。尝试query
。这是您应该使用fetchAll
的情况吗?不知道,因为这是第一次使用PDO。如果您要拉入多个数据库行,您希望使用fetchAll
而不是fetch
。如果要返回单个特定行(通过唯一键或主键),请使用fetch
。使用fetchAll()
仅返回空数组。我知道那张唱片被插入了。哦,对不起。您正在执行插入操作,而不是选择操作。我应该多加注意。尝试query
。这是您应该使用fetchAll
的情况吗?不知道,因为这是第一次使用PDO。如果您要拉入多个数据库行,您希望使用fetchAll
而不是fetch
。如果要返回单个sp,请使用fetch
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);