mysqli_prepare в PHP ничего не вставляет для электронных писем

#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. итак, какого типа email поле? например, не поможет вставить строку в поле int.

3. Я продолжаю надеяться, что это что-то настолько простое… Тип данных — varchar(55)

4. какую кодировку вы используете для email поля?

5. У вас включен proper error_reporting ? Если нет, сделайте это сейчас.