这是我在PHP上的第三天。我有以下代码来选择数据 -
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try
{
$sql = "SELECT LoginName FROM users WHERE LoginName = :LoginName";
$statement = $db->prepare($sql); //intentionally used $db here
$statement->bindParam(':LoginName', $LoginName, PDO::PARAM_STR, 50);
$statement->execute();
$count= $statement->rowCount();
}
catch(PDOException $e)
{
header('Content-Type: application/json');
echo json_encode(array('result'=>'Error','data'=> $e->getMessage()));
}
我故意使用$db
代替$conn
。所以应该有例外。但是在我的ajax通话中,$e->getMessage()
尚未从catch
阻止发送。
任何帮助?
答案 0 :(得分:1)
以下是必须如何完成
首先,设置此处理程序可以处理脚本中可能出现的所有错误,无论是PDO还是其他任何错误。
set_error_handler("myErrorHandler");
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
error_log("$errstr in $errfile:$errline");
header('HTTP/1.1 500 Internal Server Error', TRUE, 500);
header('Content-Type: application/json');
echo json_encode(array('result'=>'Error', 'data'=>'Server error'));
exit;
}
然后以这种方式制作您的PDO代码
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT 1 FROM users WHERE LoginName = ?";
$statement = $db->prepare($sql); //intentionally used $db here
$statement->execute([$LoginName]);
$found = $statement->fetchColumn();
实质上,您应遵循以下规则: