关于mysqli_stmt_error在本应返回错误的情况下不返回任何结果问题

2011-11-25 23:32:24 +08:00
 xi4oh4o
好奇去测试了下,就原本照搬官方manual里的范例代码
http://gist.github.com/1393766

在我trial and error之后都是一样的结果,mysqli_stmt_error在本应返回错误的情况下,不会返回任何结果。

为什么欲望很强烈!,非常想搞清楚是那边的问题。

环境版本:
Apache 2.2.21
MySQL 5.5.16
PHP 5.3.8
4288 次点击
所在节点    PHP
12 条回复
yesmeck
2011-11-25 23:50:30 +08:00
创建一张表是这样写的吗?
CREATE TABLE myCountry LIKE Country
yesmeck
2011-11-25 23:54:33 +08:00
唔,你有Country那张表吗?
xi4oh4o
2011-11-27 17:25:52 +08:00
@yesmeck 即使没有,但$stmt->error也会针对这个输出错误吧,但我什么也没得到
yesmeck
2011-11-27 18:57:38 +08:00
没有的话
$mysqli->prepare($query) === true
yesmeck
2011-11-27 18:57:55 +08:00
额,错了
$mysqli->prepare($query) === false
kojp
2011-11-27 19:17:45 +08:00
@xi4oh4o

会不会跟你的配置文件有关系呢?比如说,php.ini
xi4oh4o
2011-11-27 21:28:50 +08:00
@yesmeck 强制让prepare通过if判断到达$stmt->error吗、但我不使用if语句也没有得到任何结果

$stmt = $mysqli->prepare($bad_query)
$stmt = execute();
echo "test";
echo $stmt->error;
也只输出了test,但没有收到任何错误信息

@kojp php.ini的notice都开启了,不过好像无关。

两位有实际试过吗? 我想知道是不是我个列。
yesmeck
2011-11-27 22:21:45 +08:00
我这里是ok的。。。
xi4oh4o
2011-11-28 00:32:52 +08:00
@yesmeck $stmt->error;可以获取到错误信息? 也就是说不是代码的问题了。
真的是php.ini或者版本问题吗:( 方便贴下php.ini吗
yesmeck
2011-11-28 00:43:27 +08:00
要说php.ini的话跟错误有关的就这两个了
error_reporting = E_ALL | E_STRICT
display_errors = On
xi4oh4o
2011-11-28 10:30:51 +08:00
@yesmeck 非常感谢你的OK确认 :)

跑到execute();就直接throw:Call to a member function execute() on a non-object错误了,似乎是卡在prepare的问题了

过了prepare之后再用不是query方法删除字段造成错误才会有提示,不然到prepare就停了。好纠结

mysqli_stmt Object ( [affected_rows] => -1 [insert_id] => 0 [num_rows] => 0 [param_count] => 0 [field_count] => 1 [errno] => 1054 [error] => Unknown column 'username' in 'field list' [sqlstate] => 42S22 [id] => 1 )
xi4oh4o
2011-11-28 10:32:25 +08:00
@yesmeck 修正:过了prepare之后再用query方法删除字段造成错误才会有提示,不然用prepare会直接停。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/22186

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX