我终于得到了第一个PDO查询 - 一个简单的行计数查询。我仍在努力处理更复杂的查询(获取等)。在继续之前,我需要处理错误报告。
我的目标是创建两个PDO查询 - 一个用于在线使用,另一个用于最大化错误消息的本地查询。至少,我想知道我是否没有连接到我的数据库。 PDO也可以告诉我,如果我连接到不存在的数据库表,或者我引用表字段的方式是否有错误?我可以继续使用phpMyAdmin>这样做。在大多数情况下,SQL看起来似乎不适用于某些PDO修改的查询。
switch(PHP_OS)
{
case 'Linux':
// (Online query)
break;
default:
// (Local query with error reporting)
break;
}
到目前为止,我已经尝试了两种不同的数据库连接方案......
// FIRST DB CONNECTION...
try {
$db = new PDO('mysql:host=HOST_NAME;dbname=DATABASENAME;charset=utf8', 'USERNAME', 'PASSWORD');
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
// SECOND DB CONNECTION...
$dsn = "mysql:host=localhost;dbname=DATABASE;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'USERNAME','PASSWORD', $opt);
第一个告诉我,如果我没有正确连接到我的数据库,但是我没有尝试过使用它的PDO查询。我的查询可以使用第二个连接($ dsn),但根本没有错误报告。
总之,下面的代码似乎适用于我的简单行(计数)查询,并且可以按原样在线使用。但有人可以告诉我如何增强它以在本地进行最大的错误报告吗?
$dsn = "mysql:host=localhost;dbname=DATABASE;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'USERNAME','PASSWORD', $opt);
$sql= "SELECT COUNT(URL) AS num FROM people
WHERE URL = :url";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':url',$MyURL,PDO::PARAM_STR);
$stmt->execute();
$Total = $stmt->fetch();
// This query works, also...
// $sql= "SELECT URL FROM people
// WHERE URL = '$MyURL'";
// $stmt = $pdo->prepare($sql);
// $stmt->execute();
// $Total = $stmt->rowCount();
switch($Total['num'])
{
case 1;
// SUCCESS! Include appropriate files.
break;
case 0;
// ERROR 404 - NOT FOUND
break;
default:
// MULTIPLE RESULTS; HANDLE AS NEEDED
break;
}
答案 0 :(得分:0)
您不理解错误报告的想法。它必须始终最大化。
它的目的地不同。
在本地设置中,您的整个PHP 会在屏幕上显示错误:
ini_set('display_errors', 1);
在实时服务器上,使整个PHP 显示不是一个错误,而是让它们记录下来:
ini_set('display_errors', 0);
ini_set('log_errors', 1);
从上面你也可以看出第一个PDO连接示例是绝对不可接受的,不应该使用。