2014-08-27 3 views
0

Я хочу выполнить простой подготовленный отчет, используя 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 = "[email protected]"; 
$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(); 

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

Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'No index used in query/prepared statement SELECT * FROM account WHERE email=? AND password=?' mysqli_stmt->execute() #1 {main}

+1

Попробуйте добавить этот 'mysqli_report (MYSQLI_REPORT_OFF);' и посмотреть это Q & A http://stackoverflow.com/q/5580039/, где я написал сообщение об ошибке Google. –

ответ

1

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

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

Приведенный выше код делает поле идентификатора вашего стола, как PRIMARY KEY так никогда не повторяется и остается индексом вашей таблицы.

+1

У него есть первичный ключ (см. Ограничение внизу). 'not null' не требуется с' auto_increment' – Drew