相关疑难解决方法(0)

如何从PDO中挤出错误信息?

我似乎无法从PDO收到任何错误消息:

#$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
try {
  $sth = $dbh->prepare('@$%T$!!!');
  print_r($sth);
  print_r($dbh->errorInfo());
} catch (PDOException $e) {
    echo $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

它只给出:

PDOStatement Object
(
    [queryString] => @$%T$!!!
)
Array
(
    [0] => 00000
    [1] =>
    [2] =>
)
Run Code Online (Sandbox Code Playgroud)

setAttribute没有任何帮助.

这是PHP 5.3.3
支持MySQL的Apache 2.0 Handler PDO驱动程序
客户端API版本mysqlnd 5.0.7-dev - 091210 - $ Revision:300533 $

我该怎么做才能获得错误信息?

php error-handling pdo

59
推荐指数
3
解决办法
3万
查看次数

要在MySQL数据库中插入的PHP PDO代码失败

我在解决一些简单的PHP代码以在MySQL表中插入记录时遇到困难.

直接输入WAMP的代码工作正常:

INSERT INTO `users` (`userName`,`userEmail`) VALUES ('orange','orange@gmail.com')
Run Code Online (Sandbox Code Playgroud)

这个PHP代码不起作用:

<?php
    $dbHost="localhost";
    $dbName="project";
    $dbUser="admin";
    $dbPassword="abcd";
    $dbh=new PDO("mysql:host=$dbHost;dbName=$dbName", $dbUser, $dbPassword);
    print_r($dbh);
    echo "</br>";
    print_r($dbh->errorInfo());

    $query=$dbh->prepare("INSERT INTO users (userName, userEmail) VALUES (?,?)");
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());

    $query->bindValue(1, 'apple');
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());

    $query->bindValue(2, 'apple@gmail.com');
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());

    $inserted=$query->execute(); //True if succesful, False if not.
    echo "</br>";
    print_r(var_dump($query->errorInfo()));
    echo "</br>";
    print_r($query->errorCode());
    echo "</br>";
    print_r($dbh->errorInfo());
    echo "</br>";
    if ($inserted){print_r("true");}else{print_r("false");}; …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

8
推荐指数
1
解决办法
3624
查看次数

PDO 执行不返回任何内容

假设我有一个类:

class pdoc {
    private static $db_connect_pool;
    public static function openConnect() {
        try {
            $connect_options_arr = array(PDO::ATTR_PERSISTENT => true);

            self::$db_connect_pool[''.DB_DRIVER.'_'.DB_NAME.''] = new PDO("".DB_DRIVER.":host=".DB_HOST.";db_name=".DB_NAME."", DB_USER, DB_PASS, $connect_options_arr);
        } catch (Exception $e) {
            print_r($e);
        }
    }

    public static function getConnection() {
        return self::$db_connect_pool[''.DB_DRIVER.'_'.DB_NAME.''];
    }

    public static function qry($sql) {
        self::openConnect();
        $db_handle = self::getConnection();
        $st_handle = $db_handle->prepare($sql);
        return $st_handle->execute();           
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,调用类:

$sql = "SELECT * FROM sometable";

if(pdoc::qry($sql))  echo "y";
else                 echo "n";
Run Code Online (Sandbox Code Playgroud)

为什么代码总是返回n?我检查了已成功连接的连接,但是当我尝试执行一些查询时,它什么也没返回。有任何想法吗?谢谢。


更新(@Robbie 的代码)

class pdoc { …
Run Code Online (Sandbox Code Playgroud)

php pdo

1
推荐指数
1
解决办法
2568
查看次数

标签 统计

pdo ×3

php ×3

error-handling ×1

mysql ×1