【问题标题】:Fatal error: Call to undefined method mysqli::bind_param() in致命错误:调用未定义的方法 mysqli::bind_param()
【发布时间】:2023-04-07 03:45:01
【问题描述】:

我在这里找不到故障你帮忙吗?这是我的错误

致命错误:在

中调用未定义的方法mysqli::bind_param()

不知道怎么回事

        <?php
      if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST)) 
       {

          $login    = $_POST['login'];
          $password = $_POST['password'];
          $email    = $_POST['email'];

        if(empty($login) || empty($password) || empty($email))
        {
          die('Comeplete all text.');
        }
        elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) 
        {
         die('Nie poprawny adres E-mail.');
        }
        else
        {   
         include_once('config.php');

         $mysqli = new mysqli('****', '******', '*****') or die ('Fatal Error: '.mysql_error());

         if($mysqli -> connect_error) 
          die('Error Connection:'.$mysqli -> connect_error.'['.$mysqli -> connect_errno.']');


         $login     = trim(htmlspecialchars($mysqli -> real_escape_string($login)));
         $password  = hash('sha256', trim(htmlspecialchars($mysqli -> real_escape_string($password))));
         $email     = trim(htmlspecialchars($mysqli -> real_escape_string($email)));
         $ip        = $_SERVER['REMOTE_ADDR'];


         $stmt = $mysqli -> prepare("INSERT INTO `user`(`id_user`, `login`,`password`,`email`,`added`,`ip`) VALUES('', ? , ? , ? , now(), ?)");
         $stmt = $mysqli -> bind_param("ssss", $login, $password, $email, $ip);
         if ($stmt) {
            $stmt->execute();

          echo 'Success';
         }
        }
      }


    ?>
 </section> 
</body>
</html>

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    问题是,您在 MySQL 上使用的是 bind_param 函数,而不是 $stmt 变量。

    问题出在这一行:

     $stmt = $mysqli -> prepare("INSERT INTO `user`(`id_user`, `login`,`password`,`email`,`added`,`ip`) VALUES('', ? , ? , ? , now(), ?)");
     $stmt = $mysqli -> bind_param("ssss", $login, $password, $email, $ip);
    

    不用打字:

    $stmt = $mysqli->bind_param("ssss", $login, $password, $email, $ip);
    

    你应该输入:

    $stmt = $stmt->bind_param("ssss", $login, $password, $email, $ip);
    

    由于bind_param 方法仅适用于mysqli_stmt 类。而不是mysqli

    查看文档here

    【讨论】:

      【解决方案2】:

      bind_parammysqli_stmt 的方法,而不是mysqli。应该是:

      $stmt->bind_param("ssss", $login, $password, $email, $ip);
      

      【讨论】:

        【解决方案3】:

        我更正了。什么都没有改变

                <?php
              if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST)) 
               {
        
                  $login    = $_POST['login'];
                  $password = $_POST['password'];
                  $email    = $_POST['email'];
        
                if(empty($login) || empty($password) || empty($email)) // Sprawdzanie czy pola formularza nie są puste
                {
                  die('Wypełnij wszystkie dane.');
                }
                elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Sprawdzanie poprawności adresu Email
                {
                 die('Nie poprawny adres E-mail.');
                }
                else
                {   
                 include_once('config.php');
        
                 $mysqli = new mysqli('mysql.hostinger.pl', 'u162600159_reg', '******') or die ('Fatal Error: '.mysql_error());
        
                 if($mysqli -> connect_error) 
                  die('Problem z połączeniem się z bazą danych:'.$mysqli -> connect_error.'['.$mysqli -> connect_errno.']');
        
        
                 $login     = trim(htmlspecialchars($mysqli -> real_escape_string($login)));
                 $password  = hash('sha256', trim(htmlspecialchars($mysqli -> real_escape_string($password))));
                 $email     = trim(htmlspecialchars($mysqli -> real_escape_string($email)));
                 $ip        = $_SERVER['REMOTE_ADDR'];
        
        
                 $stmt = $mysqli -> prepare("INSERT INTO `user`(`id_user`, `login`,`password`,`email`,`added`,`ip`) VALUES('', ? , ? , ? , now(), ?)");
                 $stmt->bind_param("ssss", $login, $password, $email, $ip);
        
                  echo 'Zostałeś pomyślnie zarejestrowany';
                 }
                }
        
        
            ?>
         </section> 
        </body>
        </html>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-10
          • 2021-04-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-28
          • 2015-05-13
          相关资源
          最近更新 更多