我使用Zend_Db_Table来管理我的MySQL连接。它们工作得很好,但只有一个巨大的安全问题。
如果出现错误,比如MySQL关闭,ZF会抛出一个异常,显示db连接用户名和密码。
例如,我在配置中设置了错误的db密码。这是抛出的异常。
exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'root'@'localhost' (using password: YES)' in /Users/claudiocani
我正在使用Kohana 2。我想捕获一个数据库异常,以防止在无法建立到服务器的连接时出现错误页面。
显示的错误是
system/libraries/drivers/Database/Mysql.php [61]:
mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at
'reading initial communication packet', system error: 110
此时根本无法访问数据库服务器。
我是从一个模型开始做这个的。我都试过了
public functi
我不知道如何在下面的代码中捕获PDOException,请告诉我在下面的代码中在哪里抛出异常?
我有(目录):
- folder
-1) b.php
-2) c.php
- autoloader
在b.php中:
<?php
namespace folder;
use folder as x;
require_once '../autoload.php';
class b{
function __construct(){
print("<p>you are in class b<p/>
我已经在我的MacBook上手动安装了PHP,Apache和MySQL,我正在阅读一本关于如何在不使用phpMyAdmin的情况下创建表格的书。我的脚本似乎没有创建DNS,但是,它没有抛出任何异常。有什么建议吗伙计们?提前谢谢。
这是我的代码:文件名: setup.php
<?php
print("Created.\n"); // This statement prints
$db = new PDO("mysql:host=localhost;dbname=MyBlog", "username", "passwo
如果我无法连接到数据库(例如xamp倒置或数据库连接关闭等),我将试图捕获一个错误。我试过使用PDO::errorCode(),但没有重复使用。
在我的php中,我有一个connection.php和一个方法‘多次连接到数据库,并返回一个新的PDO实例来实现各种查询。响应将显示错误消息,然后显示调用它的所有php查询,其中还包括非加密格式的数据库的名称和密码。
如何捕捉此错误并将此错误消息替换为人类可读的选项(不显示名称和密码)?
CONNECTION.PHP
function connect()
{
// set database server access variab
try
{
$matrix = Query::take("SELECT moo"); //this makes 0 sense
while($row = mysqli_fetch_array($matrix, MYSQL_BOTH)) //and thus this line should be an error
{
}
return 'something';
}
catch(Exception $e)
{
return 'nothing';
}
但是,它在以while开头的行
我想为一个特定的异常添加一些处理
Zend_Db_Statement_Exception' with message
'SQL ERROR: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
我更喜欢在相当低级的地方对异常消息进行字符串比较,这样在我的应用程序逻辑中,我就可以简单地捕获像My_Module_Exception_MysqlGoneAway这样友好的异常,而不是让捕获异常子句将字符串比较散布在我的应用程序逻辑中。
因此,在这种特殊情况下,错误是由load()方法触发的,因此我可以重写Ma
代码带来了相应的参数,没有显示任何错误或异常,我不知道为什么它不执行存储过程中编程的东西,救命!
这是MySQL中的存储过程:
DELIMITER //
DROP PROCEDURE IF EXISTS prueba.CAMBIA_A_ACTIVO //
CREATE PROCEDURE CAMBIA_A_ACTIVO
(
IN _email VARCHAR(45),
IN _nombre_grupo VARCHAR(80)
)
BEGIN
UPDATE INTEGRATES_GRUPOS SET activo = 1
WHERE nombre_grupo = _no
我已经使用set_exception_handler()在我的PhP程序中设置了一个异常处理程序,它实际上工作得很好。从这个意义上说,它捕获我没有处理过的异常,并且像处理程序中提供的那样,记录异常的详细信息。那我为什么要抱怨呢?问题是,除了在异常处理程序中使用文件名和行号记录正确的详细信息外,它还在浏览器中显示以下消息:
Fatal error: Exception thrown without a stack frame in Unknown on line 0
我认为,这个特定的异常消息可能来自stdout流,而处理程序捕获的异常来自stderr流。另一种可能是上述消息是由错误处
我将Python与MySQL和Django结合使用。我一直看到这个错误,我不知道异常是在哪里抛出的:
Exception _mysql_exceptions.ProgrammingError: (2014, "Commands out of sync; you can't run this command now") in <bound method Cursor.__del__ of <MySQLdb.cursors.Cursor object at 0x20108150>> ignored
我的代码中有许多“尝试”和“异常”块--如果
我有一个数据库类:
<?php
namespace Database\MySQL;
class Database
{
function __construct(){
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$this->Connection = new mysqli(
"", // Testing with no host
""
我有一个这样的块:
begin
# some SQL request
rescue Mysql::Error => e
logputs "Mysql::Error occurred, retrying in 10s: #{e.message}"
sleep 10
retry
end
但是,当出现“与MySQL服务器的连接丢失”错误时,此块无法捕获该错误并重试( MySQL服务器重新启动)。你知道我怎样才能正确地捕捉这个异常吗?
谢谢!