我正在尝试创建一个简单的网页,让学生只使用他们的学校用户名退出当天。
我编写了一些代码来从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);
?>
答案 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寻求答案。 干杯。