Ошибка MySQL при использовании varbinary в WHERE в SELECT

У меня есть уникальные 16-байтовые ключи, и мне нужно получить идентификатор записи по ним.
Это мой пример таблицы:

CREATE TABLE `prob` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`key` VARBINARY(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB CHARSET=utf8 COLLATE utf8_general_ci;
INSERT INTO `prob` ( `key` ) VALUES ( 0x1234 );

Я делаю записи успешно:

$key = pack( "H*", '01020304' );
if( $stmt = $con->prepare("INSERT INTO prob VALUES ( DEFAULT, ? )") ) {
$stmt->bind_param( "s", $key );
$stmt->execute( );
$stmt->close( );
} else { $err = $con->error; echo "Err $err<br>"; }

Это код, я ищу идентификатор с тем же ключом:

if( $stmt = $con->prepare("SELECT id FROM prob WHERE key='?'") ) {
if( !$stmt->bind_param( "s", $key ) ) {echo 'Err bind_param.<br>'; die( );}
if( !$stmt->execute( ) ) {echo 'Err execute.<br>'; die( );}
if( !$stmt->bind_result( $id ) ) {echo 'Err bind_result.<br>'; die( );}
$rv = $stmt->fetch( );
$stmt->close( );
echo 'Result: '.print_r( $rv ).'<br>';
} else { $err = $con->error; echo "Err $err<br>"; }

Я получаю эту ошибку с этим:

Err У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с ключом = строка в строке 1

Я не мог найти решение.

Я пытался с этим кодом тоже и снова та же ошибка:

if($result = $con->query( "SELECT id FROM prob WHERE key=$key" )) {
if( $count = $result->num_rows == 1 ) {
$row = $result->fetch_row( );
$rv = $row[0];
$result->close( );
}
} else { $err = $con->error; echo "Err $err<br>"; }

Я также пытался с 0x1234, ‘0x1234’, (‘0x1234’), …, нет, нет и нет, та же ошибка …

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]