今天在php下查询mysql,居然出现了“General error: 2050”的错误。
我把PHP升级到了5.2.5版本以后,以前写的PDO程序总是报错SQLSTATE[HY000]: General error: 2053 ,我查了很久才找到问题的解决办法。这样的问题只会
发生在两条SQL连续请求的时候,如下面的例子:
$s = $db->query("SELECT * FROM test ORDER BY poledrugie;"); var_dump($s->fetchAll()); $s = $db->query("SELECT * FROM test ORDER BY poletrzecie;"); var_dump($s->fetchAll());
这样就会报错的。两种修改方法:
1.将第二个SQL的句柄换成$s1。
$s = $db->query("SELECT * FROM test ORDER BY poledrugie;"); var_dump($s->fetchAll()); $s1 = $db->query("SELECT * FROM test ORDER BY poletrzecie;"); var_dump($s1->fetchAll());
2.在第二个SQK前,将$s清空。
$s = $db->query("SELECT * FROM test ORDER BY poledrugie;"); var_dump($s->fetchAll()); $s = ''; $s = $db->query("SELECT * FROM test ORDER BY poletrzecie;"); var_dump($s->fetchAll());
其实可以得出一个结论,如果两个PDO请求赋值给同一个句柄,那么第二个句柄不会被覆盖掉,所以必须我们手动覆盖一次。
--转自