Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查mysql_connect()是否失败?_Php_Mysql - Fatal编程技术网

Php 检查mysql_connect()是否失败?

Php 检查mysql_connect()是否失败?,php,mysql,Php,Mysql,嘿,我正在尝试找出我的sql查询是否失败。我希望这样,如果它确实无法重定向到表单页面,请使用以下代码: $checkconnection = mysql_connect('localhost', $dbuser, $dbpass) or die(); if(!$checkconnection) { $_SESSION['errormsg'] = "<div style='padding-le

嘿,我正在尝试找出我的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!');
}
试试这个

$checkconnection = @mysql_connect('localhost', $dbuser, $dbpass)

它将隐藏默认错误并触发您自己的

它只显示警告,因为您的
或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!');

    }
?>

《创世纪》的答案只是压制了警告,但仍有可能奏效

如果您希望它“干净”,您可以尝试/捕获错误:

(直接来自php.net/mysql\u 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();
        }

mysql\u connect
的返回值为false仅表示失败。如果它返回
false
,则
或die()
表达式将退出php脚本。这就是您不输出任何内容的原因


删除
或die()
命令,并在
if(!$checkconnection)
子句中显示实际错误。可以使用
mysql\u error()检索报告的错误

这意味着你在试图访问的数据库上没有权限,或者你输入了错误的密码。你的密码或用户名是错误的。奇怪的是,
或die
没有触发………另外,请注意,不要在错误消息中添加标记…@Rudie,
或die()
确实会触发-只是1)他的警告消息被设置为显示,2)他的
die()
没有输出任何东西。但这对会话没有帮助,因为它可能会在保存
错误消息之前重定向。@ninetwozero:是的,它会。在大多数情况下,会话在重定向之前保存:是的,但有时它实际上不会保存数据(使您的功能中断)。。。因此,存在着。但大多数情况下不需要它。:-)添加
try/catch
不会添加任何有用的内容。相反,它将mysql错误处理习惯用法隐藏在另一个API中。包装从来不会简化,也不会清洗任何东西。(当然,这只是我的意见)沮丧的选民介意告诉我为什么我得到了它吗?你知道,建设性的批评很好。编辑:谢谢@hakre,忘了这一点。:-)
// 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();
        }