尝试连接MySQL数据库时PHP没有运行

时间:2017-07-12 12:25:00

标签: php mysql mysqli

enter image description here

我正在尝试创建一个简单的网页,让学生只使用他们的学校用户名退出当天。

我编写了一些代码来从HTML表单中获取用户输入名为“Username”并连接到包含所有学生用户名的数据库。 然后,它会在数据库中找到学生的详细信息并签名。

到目前为止,所有客户端代码都可以工作,但是一旦PHP尝试连接到数据库,一切都会停止运行,除了偶然的HTTP 500错误之外,没有出现错误代码,具体取决于我隔离的代码部分?

<html>
<head>
<?php include 'head.php'; ?>
</head>
<body>


<form method="post" action="/index.php" class="login_form">
        <input type="text" name="Username" placeholder="School Username">
        <input type="submit" value="Sign Out">
</form>

<?php
        session_start();

                // These details are used for logging in
                $sql_servername = "localhost";
                $sql_username = "root";
                $sql_password = "NotaRealPassword";
                $sql_database = "student_info";

                $username = $_POST['Username'];

                echo "Test 1";
                // Create connection
                $con = mysqli_connect($sql_servername, $sql_username, $sql_password, $sql_database);
                echo "Test 2";
                // Check Connection
                if (!$con){
                        die("Connection Failed: " . mysql_error());
                }
                echo "Connected To Database Sucessfully! ";
                echo "Test 3";
                //Perform Queries
                $result = mysql_query(con, "SELECT user_name, first_name, last_name FROM student_id WHERE user_name='" . $username  . "';");

                echo "Test 4";
                echo "Username: " . $username . "<br>";
                echo "Username: " . $UN . "<br>";
                echo "First Name: " . $FN . "<br>";
                echo "Last Name: " . $LN . "<br>";
                echo "Database Output: " . $result;

                //Close Connection
                mysqli_close($con);

?>

2 个答案:

答案 0 :(得分:2)

您正在混合mysqli_*mysql_*,不要认为这是有道理的。 同样如评论中所述,这是不安全的 - 它会让您面临SQL注入的风险。看看PDO。

您要执行的查询需要$con变量,但您忘记编写$。这意味着您会收到错误。

$result = mysql_query(con, "SELECT user_name, first_name, last_name FROM student_id WHERE user_name='" . $username  . "';");

应该,但也不应该是:

$result = mysqli_query($con, "SELECT user_name, first_name, last_name FROM student_id WHERE user_name='" . $username  . "';");

答案 1 :(得分:1)

1)您的session_start()位于wrong place

2)您正在将mysql_mysqli_ PHP函数混合使用。他们是not compatible

3)由于您referenced in comments引用了一个变量,但您忘记添加$,因此实际上它被假定为CONSTANT(未定义)。< / p>

4)如果你使用PHP Error reporting,你会自己找到所有这些东西。

5)你的MySql结果($result = mysql_query(...))不可用,它是一个SQL结果,而不是PHP可以自然处理的东西。

作为更糟糕的情况修复,您希望使用$output = mysqli_fetch_array($result);或类似方法将结果转换为可用的PHP变量。如果你阅读第6点并使用准备好的陈述,那就更好了。

6)您的SQL代码不安全,您应该紧急使用PHP Prepared Statements

请再次阅读建议4,现在您已经阅读了两次,第三次阅读并查看链接。这个建议可以节省你小时的时间,并且可以帮助你学习你的技巧,而不是向Stack Overflow寻求答案。 干杯。