#php #mysqli #insert #prepared-statement #procedural-programming
#php #mysqli #вставить #подготовленное заявление #процедурное программирование
Вопрос:
Я конвертирую несколько инструкций mysql в процедурные подготовленные инструкции в PHP, и все шло нормально, пока я не попытался привязать адрес электронной почты к параметру mysqli_stmt_bind_param. Я пользуюсь этим сайтом годами, но это мой первый пост, потому что я действительно не могу найти ответ на этот вопрос.
$stmt = mysqli_prepare($rw_link, "INSERT INTO user (gid,name,email) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sss', $gpl_id, $gpl_displayName, $gpl_email);
$gpl_id="1111";
$gpl_displayName="Test Name";
$gpl_email="test@test.com";
mysqli_stmt_execute($stmt);
printf("%d Row inserted.n", mysqli_stmt_affected_rows($stmt));
вставлена 1 строка. Вставляются идентификатор и имя, но электронное письмо — это просто «0». Я видел другие примеры людей, использующих электронные письма здесь, и я буквально скопировал код, и у меня такая же проблема.
Тип данных — таблица varchar(55): http://cl.ly/image/2r1H1k203G1U
Если вставляется число, оно обновляет значение..
mysqli_stmt_bind_param($stmt, 'sss', $gpl_id, $gpl_displayName, $gpl_email);
$gpl_id="1111";
$gpl_displayName="Test Name";
//$gpl_email="test@test.com";
$gpl_email="12345";
mysqli_stmt_execute($stmt);
Если оператор insert не подготовлен, он вставляет электронное письмо правильно:
$sql="INSERT INTO user (gid,name,email) values ('" . $gpl_id . "','" . $gpl_displayName . "','" . $gpl_email . "')";
mysqli_query($rw_link,$sql) or die(mysqli_error($rw_link));
Комментарии:
1. У меня этот фрагмент кода работает нормально. Я получаю вставленное электронное письмо нормально.
2. итак, какого типа
3. Я продолжаю надеяться, что это что-то настолько простое… Тип данных — varchar(55)
4. какую кодировку вы используете для
5. У вас включен proper
error_reporting
? Если нет, сделайте это сейчас.