PHP PDO函数打破PHP代码

时间:2013-02-03 17:26:18

标签: php mysql function pdo

以下功能无效。我不明白为什么。

function access_apply($email,$pwd,$forname,$surname,$postcode,$telephone,$mobile){
    global $cnx;
    $pwd = bcrypt_hash($pwd);
    $q = $cnx->prepare("INSERT INTO `users` (email, pwd, forename, surname, postcode, telephone, mobile) VALUES (:email, :pwd, :forename, :surname, :postcode, :telephone, :mobile)");
    $q->execute(array(':email' => $email, ':pwd' => $pwd, ':forename' => $forename, ':surname' => $surname, ':postcode' => $postcode, ':telephone' => $telephone, ':mobile' => $mobile));
}

一旦调用它,代码就会中断并且不再执行任何操作。

2 个答案:

答案 0 :(得分:4)

  1. 您需要启用错误报告 您遇到了“非对象成员”错误,但看不到它。
  2. 您需要启用PDO的例外以查看您遇到错误的原因。
  3. 因此,请在脚本顶部添加此代码:

    error_reporting(E_ALL);
    ini_set('display_errors',1);
    
    连接后

    和这个:

    $cnx->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    

    查看ajax请求中发生的事情使用Firebug(网络标签,响应部分)

    或者 - 好多了! -

    启用错误记录并观察Web服务器错误日志中的所有错误 这样做会改变以前的设置并添加其他设置

    ini_set('display_errors',0);
    ini_set('log_errors',1);
    

答案 1 :(得分:0)

看起来它可能是函数参数中的拼写错误。一个是$ forname,你在数组中分配$ forename。因此,它可能是未定义的变量,或者正在发生的参数计数不匹配。