2015-12-31 35 views
-1

我遇到了问题。这里是我的PHP脚本,当我运行此代码,它给了我这个错误,PHP,Mysql致命错误:调用成员函数bind_param()

Fatal error: Call to a member function bind_param() on boolean in C:\xampp\htdocs\osadnicy\zaloguj.php on line 30.

我怎样才能解决呢?请帮忙。

<?php 

    session_start(); 

    if ((!isset($_POST['login'])) || (!isset($_POST['haslo']))) 
    { 
     header('Location: index.php'); 
     exit(); 
    } 

    require_once "connect.php"; 

    $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name); 

    if ($polaczenie->connect_errno!=0) 
    { 
     echo "Error: ".$polaczenie->connect_errno; 
    } 
    else 
    { 
     $login = $_POST['login']; 
     $haslo = $_POST['haslo']; 

     $login = htmlentities($login, ENT_QUOTES, "UTF-8"); 


     $zapytanie = $polaczenie->prepare("SELECT * FROM uzytkownicy WHERE user = ? AND haslo = ?"); 
     $zapytanie->bind_param('ss', $login, $haslo); 

     if ($rezultat = $zapytanie->execute()) 
     { 
      $ilu_userow = $rezultat->num_rows; 
      if($ilu_userow>0) 
      { 
       $wiersz = $rezultat->fetch_assoc(); 

       if (password_verify) 
       { 
        $_SESSION['zalogowany'] = true; 
        $_SESSION['id'] = $wiersz['id']; 
        $_SESSION['user'] = $wiersz['user']; 
        $_SESSION['drewno'] = $wiersz['drewno']; 
        $_SESSION['kamien'] = $wiersz['kamien']; 
        $_SESSION['zboze'] = $wiersz['zboze']; 
        $_SESSION['email'] = $wiersz['email']; 
        $_SESSION['dnipremium'] = $wiersz['dnipremium']; 

        unset($_SESSION['blad']); 
        $rezultat->free_result(); 
        header('Location: gra.php'); 
       } 
       else 
       { 
        $_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>'; 
        header('Location: index.php'); 
       } 

      } else { 

       $_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>'; 
       header('Location: index.php'); 

      } 

     } 

     $polaczenie->close(); 
    } 

?> 
+0

包含的代码有问题。 – Script47

+0

是这一个文件代码或多个文件? –

+0

多个(7files + 1 * .sql) –

回答

0

在您的代码片段中更正以下部分。

<?php 
/* Create a prepared statement */ 
$zapytanie = $polaczenie->stmt_init(); 

if ($zapytanie->prepare("SELECT * FROM uzytkownicy WHERE user = ? AND haslo = ?")) 
    { 
    $zapytanie->bind_param('ss', $login, $haslo); 
    if ($rezultat = $zapytanie->execute()) 
     { 

     // Your Code 

     } 
    } 

参考网址:
http://php.net/manual/en/mysqli-stmt.prepare.php

+0

和t他的'if(password_verify)'? –

+0

我的答案是特定于错误的“调用成员函数bind_param()”,但这很好。我同意你这将被视为不变 –

+0

OP不检查任何地方的错误,无论是在PHP或MySQL。我担心你可能被追到了一个兔子洞里。 –

相关问题