mysqli фатальная ошибка: индекс не используется в запросе / подготовленном сообщении

Я хочу выполнить простое подготовленное заявление с использованием mysqli, но это не сработает.

У меня есть эта таблица:

CREATE TABLE IF NOT EXISTS `account` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(100) COLLATE latin1_german2_ci NOT NULL, `password` varchar(100) COLLATE latin1_german2_ci NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=4 ; 

И хотите распечатать идентификатор определенного письма.

 $mysqli = new mysqli($server,$user,$pass,$db); if(mysqli_connect_errno()) { echo "Connection Failed: " . mysqli_connect_errno(); exit(); } $user = "test@dada.com"; $pass = "dada"; /* Create a prepared statement */ if($stmt = $mysqli -> prepare("SELECT * FROM account WHERE email=? AND password=?")) { /* Bind parameters s - string, b - blob, i - int, etc */ $stmt -> bind_param("ss", $user, $pass); /* Execute it */ $stmt -> execute(); /* Bind results */ $stmt -> bind_result($result); /* Fetch the value */ $stmt -> fetch(); echo $user . "id of user is " . $result; /* Close statement */ $stmt -> close(); } /* Close connection */ $mysqli -> close(); 

Но я получаю следующую ошибку:

Неустранимая ошибка: Не удалось исключить «mysqli_sql_exception» с сообщением «Нет индекса, используемого в запросе / подготовленном выражении SELECT * FROM account WHERE email =? И пароль =? ' mysqli_stmt-> execute () # 1 {main}

Ну, я думаю, вы должны это сделать:

 CREATE TABLE IF NOT EXISTS `account` ( `id` PRIMARY KEY int(11) NOT NULL AUTO_INCREMENT, // the rest 

Вышеприведенный код делает поле id вашей таблицы как PRIMARY KEY поэтому он никогда не повторяется и остается индексом вашей таблицы.