0

説明するのは少し難しいです。正常に動作するmysql関数を作成しましたが、mysqlの減価償却により、mysqlメソッドではなくmysqliを使用するようにこの関数を変更する必要があります。私は現在持っています:

$con = mysql_connect("host", "username", "pass");
mysql_select_db("db", $con);
$Username = mysql_real_escape_string($_POST['user']);
$Password = hash_hmac('sha512', $_POST['pass'], '&R4nD0m^');
$Query = mysql_query("SELECT COUNT(*) FROM users WHERE username = '{$Username}' AND password = '{$Password}'") or die(mysql_error());
    $Query_Res = mysql_fetch_array($Query, MYSQL_NUM);
    if($Query_Res[0] === '1')
    {
        //add session
        header('Location: newpage.php');
    }
            else {
                echo 'failed login';
            }

これにmysqliを適用しましたが、データやエラーは返されませんが、関数は引き続き準拠しています。

$log = new mysqli("host", "user", "pass");
$log->select_db("db");
$Username = $log->real_escape_string($_POST['user']);
$Password = hash_hmac('sha512', $_POST['pass'], '&R4nD0m^');
$qu = $log->query("SELECT COUNT(*) FROM users WHERE username = '{$Username}' AND password = '{$Password}'");
    $res = $qu->fetch_array();
    if($res[0] === '1'){
        //add session
        header('Location: newpage.php');
    }
    else {
        $Error = 'Failed login';
        sleep(0.5);
    }
    echo $res['username'].'              hello';
}

しかし、なぜこれが間違っているのかわかりません。私はそれがおそらく単純な答えであることを知っています

4

2 に答える 2

2

答えとしてそれを持っているだけです:

http://php.net/manual/en/pdo.prepared-statements.php http://php.net/manual/en/pdo.prepare.php

例えば

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
于 2012-11-24T19:50:32.040 に答える
0

使用する前に、接続が確立されているかどうかを確認できますreal_escape_string()

if ($log->connect_errno) {
echo "Failed to connect to MySQL: (".$log->connect_errno.")".$log->connect_error;
}

afaik、問題ありません$log->real_escape_string($_POST['user']);

于 2012-11-24T19:31:03.860 に答える