Мне нужно вставить строку, используя улучшенную библиотеку php mysql, в таблицу в mysql, у которой есть первичный ключ типа VARBINARY.
Содержимое этого поля представляет собой вычисленный хэш sha1.
Если я запускаю запрос по-старому, он отлично работает:
$mysqli->$query("INSERT INTO table (id, field1) VALUES (0x" . $id . ",'" . $field1 . "')");
Но когда я пытаюсь выполнить его как подготовленное утверждение, я не могу понять, как это сделать. Если
Я выполняю эквивалентное действие:
if($stmt = $mysqli->prepare("INSERT INTO table (id, field1) VALUES (?, ?)")) {
$stmt->bind_param('ss', "0x".$id, $field1);
//execute statement
}
Выдает исключение, говорящее, что содержимое было слишком большим для этого поля. И если я попытаюсь вставить его как поле BLOB:
if($stmt = $mysqli->prepare("INSERT INTO table (id, field1) VALUES (?, ?)")) {
$stmt->bind_param('bs', $id, $field1);
//execute statement
}
Ошибка не выдается, строка вставлена, но поле идентификатора теперь пустое (не пустое, пустое).
Я знаю, что могу смешать запрос и ввести объединенный идентификатор в строку и другие поля в качестве параметров связывания подготовленного оператора, но я просто спрашиваю, как правильно вставить это и возможно помогите кому-нибудь в будущем.