-6

14 行目で、タイトルのとおりエラーが発生します。私は php を初めて使用します。ログインすると、このコードはインデックス ページへのログイン時にエラーをスローします。でもログインできます(方法はよくわかりません)。

<?php
include 'functions.php';
include_once("config.php");
session_start();
if(!isset($_SESSION["email"])){
  header("location: login.php");
  exit();
}
$id = preg_replace('#[^0-9]#i', '',$_SESSION["id"]);
$email = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["email"]);
$password = preg_replace('#[^A-Za-z0-9]#i', '', $_SESSION["password"]);
include "db_connect.php";
$sql=mysql_query("SELECT * FROM 'members' WHERE id - ? LIMIT 1"); // query the person
$existCount=mysql_num_rows($sql); // count the nums
if ($existCount==1){//evaluate the count
  echo "Your login session data is not on record in the database";
  exit();
}
?>
4

2 に答える 2

0

SQL ステートメントが不完全です:

それ以外の

    $sql=mysql_query("SELECT * FROM 'members' WHERE id - ? LIMIT 1"); // 人に問い合わせる

これを使って

    $sql=mysql_query("SELECT * FROM members WHERE id ="."'".$id."'"." and password ="."'".$password."' LIMIT 1"); // 人に問い合わせる

もちろん、これはパスワードをそのまま使用していることを前提としています (これは良い考えではありません)。データベースに保存する前にエンコードする必要があります。

于 2013-10-20T16:40:28.227 に答える
-1

次のようにクエリステートメントを修正してください。

<?php
 $sql = "SELECT * FROM `members` WHERE id = '{$id}' LIMIT 1";
 // `members` can also be simply members only but don't use quotes like ('', or "")
 ?>

このステートメントを照会すると、問題から抜け出すことができます。
提案のビット mysql_* は公式に廃止されているため、mysqliまたはPDOを使用してください。

于 2013-10-20T16:40:13.110 に答える