2016-04-20 4 views
-2

私は指定された 'username'と一致するエントリの数を数えたいと思います。その0か1が真か偽かを返すかどうかによって決まります。しかし、私はどのようにわからない。 mysqliでmysql_returnを見つけることができません。 $ usernameは別のスクリプトファイルの定義済みの変数です。mysqliのmysql_resultと等価です。

<?php 
function user_exists($username) { 
    $query = mysqli_query($connect, "SELECT COUNT('userid') FROM 'users' WHERE 'username' = '$username' "); 
    return (mysqli_result($query, 0) == 1) ? true : false ; 
} 
?> 

ここで、私はuser_exists()関数を使用します。

<?php 
include 'core/init.php'; 

if (empty($_POST) === false) { 
    $username = $_POST['username']; 
    $password = $_POST['password']; 

    if (empty($username) === true || empty($password) === true) { 
     $errors[] = 'You need to enter a user name and password'; 
    } 
    else if (user_exists($username) === false) { 
     $errors[] = "Username not found."; 
    } 
} 
?> 

私はinit.phpファイルを含めることができますが、必要ではないようです。そのファイルには他のファイルが含まれています。これにはuser_exists()関数が含まれています。また、これはあなたのクエリ構文でいくつかのミスはとても慎重にこれをチェックたinit.php

<?php 
$connect_error = "Connection Problem"; 
$connect = mysqli_connect('localhost', 'root', '', 'people') or die(connect_error); 
?> 
+0

への呼び出しを修正する必要があります? – Saty

+0

私はそれを追加しました。その$ connectと呼ばれる接続 –

+0

mysqlでmysql_returnを見つけることができません...!?それは何であるはずですか? – deceze

答えて

1

に含まれて私の接続スクリプトです。

行数を取得するには、私はSELECT EXISTS(SELECT 1 FROM...)が最も効率的だと信じています。

は、私はまた、すべての接続ハンドルが動作する必要がmysqli_ proceedural機能、私はまた、声明および結合を用意していますmysql_

mysqli_に変換して主な問題の一つのthatsを覚えて、この機能への接続に合格していますSQLインジェクションの問題を軽減するためのパラメータです。

さらに、エラー処理を追加しました。これにより、エラーがPHPエラーログに書き込まれます。

<?php 
function user_exists($con, $username) { 
    $cnt = 0; 
    $sql = "SELECT EXISTS(SELECT 1 FROM `users` WHERE `username` = ?"; 
    $stmt = mysqli_prepare($con, $sql); 

    if ($stmt === false) { 
     error_log('user_exists() count failed: ' . mysqli_stmt_error($stmt), 0); 
     exit; 
    } 

    mysqli_stmt_bind_param($stmt, 's', $username); 
    $res = mysqli_stmt_execute($stmt); 

    if ($res === false) { 
     error_log('user_exists() count failed: ' . mysqli_stmt_error($stmt), 0); 
     exit; 
    } 

    mysqli_stmt_bind_result($stmt, $cnt); 
    return $cnt == 1; 
} 
?> 

今すぐあなたの接続変数が何であるかを

user_exists($connection, $username)