嘿,我想知道我的sql查询是否失败了。我希望它,所以,如果它确实失败重定向到表单页面使用下面的代码:
$checkconnection = mysql_connect('localhost', $dbuser, $dbpass)
or die();
if(!$checkconnection)
{
$_SESSION['errormsg'] = "<div style='padding-left: 50px;color:#FF0000'>Cannot connect to specfied database!</div>";
header("Location: install.php");
}else{
echo('Connection Successful!');
}
使用它的意思是:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'nzcraftn_admin'@'localhost' (using password: YES) in /home/nzcraftn/public_html/phishnet/install/install_submit.php on line 17
试试这个
$checkconnection = @mysql_connect('localhost', $dbuser, $dbpass)
它将隐藏默认错误并触发您自己的
mysql_connect
返回值为false仅表示失败。如果返回FALSE
,则or die()
表达式将退出php脚本。这就是为什么你不使用它的任何输出的原因。
删除or die()
命令,并在if( !$checkconnection )
子句中显示实际错误。报告的错误可以使用mysql_error()
检索。
它只显示警告,因为您的or die()
没有输出任何内容(空参数列表)。试试这个:
<?php
//Start the session
session_start();
//Do the conntection
$checkconnection = @mysql_connect('localhost', $dbuser, $dbpass);
//Check if it's valid
if(!$checkconnection) {
//Add it up to the session, and redirect
$_SESSION['errormsg'] = "<div style='padding-left: 50px;color:#FF0000'>Cannot connect to specfied database!</div>";
session_write_close();
header("Location: install.php");
exit();
} else{
//Yay
echo('Connection Successful!');
}
?>
创世纪的答案只是抑制了警告,但仍然可能工作
如果你想让它"干净",你可以尝试/catch错误:
(直接来自php.net/mysql_connect:
上的评论)// Assign variables
global $db_connection, $db_server, $db_database, $db_username, $db_password;
$db_server = $server;
$db_database = $database;
$db_username = $username;
$db_password = $password;
// Attempt connection
try
{
// Create connection to MYSQL database
// Fourth true parameter will allow for multiple connections to be made
$db_connection = mysql_connect ($server, $username, $password, true);
mysql_select_db ($database);
if (!$db_connection)
{
throw new Exception('MySQL Connection Database Error: ' . mysql_error());
}
else
{
$CONNECTED = true;
}
}
catch (Exception $e)
{
echo $e->getMessage();
}