关于mysqli_stmt_error在本应返回错误的情况下不返回任何结果问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xi4oh4o
0.23D
V2EX    PHP

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

  •  
  •   xi4oh4o 2011-11-25 23:32:24 +08:00 4625 次点击
    这是一个创建于 5076 天前的主题,其中的信息可能已经有所发展或是发生改变。
    好奇去测试了下,就原本照搬官方manual里的范例代码


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

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

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

    会不会跟你的配置文件有关系呢?比如说,php.ini
    xi4oh4o
        7
    xi4oh4o  
    OP
       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
        8
    yesmeck  
       2011-11-27 22:21:45 +08:00
    我这里是ok的。。。
    xi4oh4o
        9
    xi4oh4o  
    OP
       2011-11-28 00:32:52 +08:00
    @yesmeck $stmt->error;可以获取到错误信息? 也就是说不是代码的问题了。
    真的是php.ini或者版本问题吗:( 方便贴下php.ini吗
    yesmeck
        10
    yesmeck  
       2011-11-28 00:43:27 +08:00
    要说php.ini的话跟错误有关的就这两个了
    error_reporting = E_ALL | E_STRICT
    display_errors = On
    xi4oh4o
        11
    xi4oh4o  
    OP
       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
        12
    xi4oh4o  
    OP
       2011-11-28 10:32:25 +08:00
    @yesmeck 修正:过了prepare之后再用query方法删除字段造成错误才会有提示,不然用prepare会直接停。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2555 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 02:14 PVG 10:14 LAX 19:14 JFK 22:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86