Can';t在PHP中连接到MySQL数据库

Can';t在PHP中连接到MySQL数据库,php,mysql,Php,Mysql,我正在遵循一本书中的指南,所有代码看起来都很好,但我无法连接到我的数据库。这很烦人,我已经获得了所有的特权,什么都没有。“连接文件”确实设置为打开 一切都在连接阶段进行,但我完全被激怒了,尝试了所有人,尝试了创建一个新用户以及所有这些。代码似乎没有问题。我尝试使用127.0.0.1而不是localhost。有什么遗漏吗 <?php DEFINE ('DB_USER', 'sam'); DEFINE ('DB_PASSWORD', 'whatever'); DEFINE ('DB_HOST

我正在遵循一本书中的指南,所有代码看起来都很好,但我无法连接到我的数据库。这很烦人,我已经获得了所有的特权,什么都没有。“连接文件”确实设置为打开

一切都在连接阶段进行,但我完全被激怒了,尝试了所有人,尝试了创建一个新用户以及所有这些。代码似乎没有问题。我尝试使用127.0.0.1而不是localhost。有什么遗漏吗

<?php

DEFINE ('DB_USER', 'sam');
DEFINE ('DB_PASSWORD', 'whatever');
DEFINE ('DB_HOST', '127.0.0.1');
DEFINE ('DB_NAME', 'beginner');

$dbcon = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die ('Could not connect to MySQL:' .mysql_connect_error());
mysqli_set_charset($dbcon, 'utf8'); ?>

这是我的外部代码,但这是启动代码:

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $errors = array();
    if (empty($_POST['fname'])) {
    $errors[] = 'You did not enter a first name.';
    }
else { $fn = trim($_POST['fname']);
    }
if (empty($_POST['lname'])) {
    $errors[] = 'You did not enter a last name.';
    }
else { $ln = trim($_POST['lname']);
    }

if (empty($_POST['email'])) {
    $errors[] = 'You did not enter your e-mail address.';
    }
else {$e = trim($_POST['email']);
    }

    if(!empty($_POST['psword1'])) {
    if ($_POST['psword1'] !=$_POST['psword2']) {
    $errors[] = 'Your passwords were not the same';
    }
else {$p = trim($_POST['psword1']);
    }
    }
    else { $errors[] = 'You did not enter your password.';
    }

if (empty($errors)) {
    require ('mysql_connect.php');

    $q = "INSERT INTO users (user_id, fname, lname, email, psword, registration_date)
    VALUES (' ', '$fn', '$ln', '$e', SHA1('$p'), NOW() )";
    $result = @mysqli_query ($dbcon, $q);
    if ($result) {
    header ('location: ../register-thanks.php');
    exit();
    }

    else {echo '<h2>Error!</h2>
    <p class="error">You could not be registered due to a system error. We apologise for any inconvenience.</p>';
    echo '<p>'.mysqli_error($dbcon); '<br><br>Query:'.$q.'</p>';}

    include ('footer.php');
    exit();
    }

    else {
        echo '<h2>Error!</h2>
        <p class="error">The following error(s) occurred:<br>';
        foreach ($errors as $msg) {
            echo " - $msg<br>\n";
            }
            echo '</p><h3>Please try again</h3><p><br></p>';
            }
            }
            ?>

如用户在评论中所说,尝试删除“@”符号。这将停止抑制错误。之后,启用PHP的错误报告

例如:


它会抛出什么错误?你尝试过localhost而不是127.0.0.1吗?删除@-你正在用它抑制错误。我已经这样做了,但它仍然只是返回默认的else错误语句,没有任何具体内容。抱歉,伙计们,仍然没有得到任何结果!你知道吗,真的很痛苦。好吧,我按照指南中的规定把连接放在上面的文件夹中,但忘记指向上面的文件夹,错误正在显示。谢谢你的帮助。很好的人。很乐意帮忙!考虑关闭你的帖子或者接受一个答案。
<!doctype html>
<html lang=en>
<head>
<title>Registration thank you page</title>
<meta charset=utf-8>
<link rel="stylesheet" type="text/css" href="includes.css">
</head>
<body>
<div id="container">
<?php include ("header.php"); ?>
<?php include ("nav.php"); ?>
<?php include ("info-col.php"); ?>
<div id="content">
<p>The thank you page content. The thank you page content. The thank you page content.<br> Try removing the '@' sign, as user Jimbo says in his comment. That should stop suppressing errors. After that, enable PHP's error reporting.

Example:

<?php

error_reporting( E_ALL );
ini_set( 'display_errors', 1 );

define( 'DB_USER', 'sam' );
define( 'DB_PASSWORD', 'whatever' );
define( 'DB_HOST', '127.0.0.1' );
define( 'DB_NAME', 'beginner' );

$dbcon = mysqli_connect( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME )
    OR die ('Could not connect to MySQL:' . mysql_connect_error() );
mysqli_set_charset( $dbcon, 'utf8' );