2017-09-28 20 views
0

私は下のコードで数時間立ち往生しました。私はこのエラーをどのように修正できるのか分かりません。未知のエラー:nullのメンバー関数のquery()を呼び出す

Notice: Undefined variable: mysqli in D:\xampp\htdocs\recon\register.php on line 19

Fatal error: Uncaught Error: Call to a member function query() on null in D:\xampp\htdocs\recon\register.php:19 Stack trace: #0 {main} thrown in D:\xampp\htdocs\recon\register.php on line 19

<?php 

$conn = new mysqli('localhost', 'root', '', 'user'); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$uname = $_POST['uname']; 
$psw = $_POST['psw']; 
$options = [ 
'cost' => 12,]; 
$hashedpassword= password_hash($psw, PASSWORD_BCRYPT, $options); 

$result = $mysqli->query("SELECT username FROM registration WHERE username = '$uname'"); 
$row_count = $result->num_rows; 
if($row_count == 1) { 
    echo 'User already exists, try another one.'; } 
else { 

    $query = "INSERT INTO user (username, password) VALUES(?, ?)"; 
    $statement = $mysqli->prepare($query); 

    $statement->bind_param('ss', $uname, $hashedpassword); 

    if($statement->execute()) 
    { 
     print 'Success! Last inserted record : ' .$statement->insert_id .'<br />'; 
    } 
    else 
    { 
     die('Error : ('. $mysqli->errno .') '. $mysqli->error); 
    } 
    $statement->close(); 

} 

?> 
+2

変数 '$ mysqli'はどこで定義しますか?なぜ*それが 'ヌル 'であってはならないのですか? – David

+0

あなたは2つの異なるチュートリアルに従っていましたか? $ conn対$ mysqli http://php.net/manual/en/mysqli.query.php#example-1878 – epascarello

答えて

0

あなたは$connと呼ばれるmysqliのインスタンスを宣言しています。これはDBへの接続を表します。変数$connのメソッドを呼び出す必要があります。定義されていない変数$mysqliは呼び出さないでください。だからあなたのライン19は次のようになります。

$result = $conn->query("SELECT username FROM registration WHERE username = '$uname'") 

また、あなたは(SELECT含む)EVERYWHERE prepared statementsを使用する必要がありますクエリ/ウェブページ上でSQLインジェクションを防ぐために。

+0

ありがとう、それは私が間違いをどこにしたのか理解するのに役立ちました。 – BlockeeR

関連する問題