Ошибка bindParam() mysql

У меня есть способ с именем Userdaten с идентификатором colums, Benutzername и Passwort. Теперь я хочу проверить этот код. Не работает Я получаю фатальную ошибку: вызов функции-члена bindParam() для логического значения в строке 11. Почему? Я использую Server-Typ: MariaDB.

<?php
include 'conn.php';

    $result="";
       $username = "Max";
          $password = "123";
    
    
          $sql = "SELECT * FROM Userdaten WHERE  Benutzername = :username AND Passwort = :password";
          $stmt = $Userdaten->prepare($sql);
          $stmt->bindParam(':username', $username, PDO::PARAM_STR);
          $stmt->bindParam(':password', $password, PDO::PARAM_STR);
          $stmt->execute();
          if($stmt->rowCount())
          {
    $result = "true";
          }  
          elseif(!$stmt->rowCount())
          {
      $result = "false";
          }

?>

<?php
$db_name = "testdata";
$mysql_username = "******";
$mysql_password = "******";
$server_name = "localhost";
$Userdaten = mysqli_connect($server_name, $mysql_username, $mysql_password, $db_name);
mysqli_query($Userdaten, "SET NAMES 'utf8'");
?>

1 ответ

Решение

Пытаться:

    $sql = "SELECT * FROM Userdaten WHERE  Benutzername = :username AND Passwort = :password";
     $stmt = $Userdaten->prepare($sql);
     $stmt->bindparam(":username",$username);
     $stmt->bindparam(":password",$password);
    $stmt->execute();
    $result = ($stmt->rowCount() > 0) ? true : false;

Также - в вашем файле подключения к БД измените это:

$Userdaten = mysqli_connect($server_name, $mysql_username, $mysql_password, $db_name);
mysqli_query($Userdaten, "SET NAMES 'utf8'");

к этому:

$Userdaten = new PDO("mysql:host=" . $server_name . ";dbname=" . $db_name . ";charset=utf8", $mysql_username, $mysql_password);

Когда вы начали использовать PDO, используйте те же API в своем файле базы данных. Более подробную информацию об API, которые вы можете выбрать для своего проекта PHP для подключения к MySQL, можно найти здесь. Подводя итог, ссылка говорит нам следующее:

Не рекомендуется использовать старое расширение mysql для новой разработки, поскольку оно устарело в PHP 5.5.0 и удалено в PHP 7.

Обратите внимание, что приведенная выше ссылка также содержит подробную матрицу сравнения функций для соответствующих API.

Другие вопросы по тегам