2017-07-12 20 views
-1

enter image description herePHP、MySQLデータベース

に接続しようとしたときに、私は学生がちょうど彼らの学校のユーザー名を使用して、その日のために署名することができます簡単なWebページを作成しようとして動作していません。

"Username"というHTMLフォームからユーザー入力を受け取り、すべての生徒のユーザー名を含むデータベースに接続するコードを記述しました。 それから、データベース内で生徒の詳細を見つけてサインアウトします。

これまでのところ、すべてのクライアントサイドのコードが動作しますが、PHPの試行がデータベースに接続するとすぐにすべてが停止し、コードのどの部分が分離されるかによってエラーコードが時々発生するHTTP 500エラー?あなたがmysqli_*mysql_*を混合している

<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

あなたはエラーを引き起こすと思われるコードを入れてください – Exprator

+6

あなたは[SQL Injections](http://php.net/manual/en/security.database.sql-injection.php)を広く公開しています。実際には[Prepared Statements](http:// php。net/manual/en/mysqli.quickstart.prepared-statements.php)を実行してください。あなたがユーザーの入力をまったくエスケープしていないからです! –

+0

あなたの文字列に '{}'のような文字が含まれている場合、phpが変数を期待するかもしれないので、おそらくそれを一重引用符で囲む必要があります。 mysqlとmysqliを混在させないでください。 – jeroen

答えて

2

、それは理にかなっているとは思いません。 また、コメントで述べたように、これは安全ではありません - 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 . "';"); 
+4

私は、 – halfer

+0

私は最初の段落でそれを言いました。 –

+1

ああ、私はそれを逃しました、そして、それは、私は、初心者の読者も同様にそうするかもしれないことを意味すると思います。 – halfer

1

1)あなたのsession_start()wrong placeです。

2)mysql_mysqli_ PHP関数を混在させています。彼らはnot compatibleです。

3)あなたは、変数を参照していますが、あなたが$を追加するには忘れてしまったので、実際に定義されていませんCONSTANT()であると想定されていますreferenced in commentsとして。

4)PHP Error reportingを使用している場合は、これらのすべてを自分で見つけたでしょう。

5)MySqlの結果($result = mysql_query(...))は使用できません。これはSQLの結果であり、PHPが自然に処理できるものではありません。

さらに悪い場合は、$output = mysqli_fetch_array($result);などの方法を使用して結果を使用可能なPHP変数に変えたい場合があります。あなたがポイント6を読んでPrepared Statementを採用すればさらに良いでしょう。

6)あなたのSQLコードは安全ではなく、PHP Prepared Statementsを使用して緊急に調べる必要があります。


提案4をもう一度読み、2度読んだら、3度目に読んでリンクをチェックアウトしてください。この提案は時間の時間を節約し、答えのためにスタックオーバーフローを求めるのではなく、あなたの工芸品を学ぶのに役立ちます。 乾杯。

関連する問題