PHP mysqli Тип bind_param для текста

Для формы обратной связи, которая будет удалять комментарии пользователей в таблице MySQL, я не знаю, какой тип bind_param использовать для предоставленного пользователем текста обратной связи (тип поля MySQL = текст)

function sql_ins_feedback($dtcode,$custip,$name,$email,$subject,$feedback) { global $mysqli ; if($stmt = $mysqli->prepare("INSERT INTO feedback (dtcode,custip,name,email,subject,feedback) VALUES (?,?,?,?,?,?)")) { $stmt->bind_param("ssssss", $dtcode,$custip,$name,$email,$subject,$feedback); $stmt->execute() ; $stmt->close() ; } } 

ИЛИ ЭТО?

  $stmt->bind_param("sssssb", $dtcode,$custip,$name,$email,$subject,$feedback); 

Итак, тип blob правильный тип bind_param для текстового поля?

Каков максимальный размер для типа bind_param (s)?

Есть ли что-нибудь еще, что нужно делать при использовании bind_param («b»)? Руководство (и что-то еще, что я где-то читал / когда-то) предполагает, что типы blob рассматриваются по-разному – все, что я должен знать?

благодаря

Это фактически зависит от сервера Mysql. Максимальный размер по умолчанию для всех данных, объединенных во всем запросе, равен 1 Мб. См .: http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html

Если ваши данные объединены под этим порогом «max_allowed_packet» , просто используйте «s» для типа привязки для любого текстового поля. Infact, вы обычно можете уйти с использованием «s» для любого типа поля (date, float и т. Д.).

Если вся ваша запись, которую вы хотите вставить, превышает 1 мб (или все, что вы ее переустановили) в длину, вы захотите использовать метод mysqli_stmt :: send_long_data и тип привязки «b» для отправки этого конкретного поля в куски.

Тем, кто хочет использовать mysqli bind_param('ssbss', $data) вы должны использовать bind_param('sssss') , в то время как вы делаете UPDATE или INSERT. Таким образом, вы можете динамически заменить все? в подготовленном запросе со значениями, хранящимися в массиве:

 call_user_func_array(array($stmt, 'bind_param'), makeValuesReferenced($typeValues)); 

$typeValues – это массив, объединенный с использованием array_merge или array_unshift по массиву ('sssss') и массиву (ссылка на var1, ссылка var2, …);

makeValuesReferenced:

 /** * All prepared variables' references are needed by function bind_param * @param &$arr: array constituted of types and values */ function makeValuesReferenced(&$arr){ $refs = array(); foreach($arr as $key => $value) { // Param 1 of bind_param only needs value of types array if($key === 0) { $refs[$key] = $arr[$key]; } else { $refs[$key] = &$arr[$key]; } } return $refs; } 

Используя bind_param ('ssbss', $ data), вы получите только пустую ячейку в столбце blob.