文本的PHP mysqli bind_参数类型

文本的PHP mysqli bind_参数类型,php,mysqli,Php,Mysqli,对于将用户评论转储到MySQL表中的反馈表单,我不确定用户提供的反馈文本(MySQL字段类型=text)使用哪种绑定参数类型 还是这个 $stmt->bind_param("sssssb", $dtcode,$custip,$name,$email,$subject,$feedback); 那么,blob类型是文本字段的正确绑定参数类型吗 绑定参数(“s”)类型的大小限制是多少 使用bind_param(“b”)时还必须做什么?手册(以及我在某处/某个时候读到的其他内容)

对于将用户评论转储到MySQL表中的反馈表单,我不确定用户提供的反馈文本(MySQL字段类型=text)使用哪种绑定参数类型

还是这个

        $stmt->bind_param("sssssb", $dtcode,$custip,$name,$email,$subject,$feedback);
那么,blob类型是文本字段的正确绑定参数类型吗

绑定参数(“s”)类型的大小限制是多少

使用bind_param(“b”)时还必须做什么?手册(以及我在某处/某个时候读到的其他内容)建议对blob类型进行不同的处理——有什么我应该知道的吗


谢谢

这实际上取决于Mysql服务器。整个查询中合并的所有数据的默认最大大小为1mb。见:

如果您的数据组合低于该阈值,只需对任何文本字段的绑定类型使用“s”。实际上,对于任何字段类型(日期、浮点等),通常都可以使用“s”来表示


如果您要插入的整个条目组合长度超过1mb(或您将其重置为的任何长度),您需要使用方法和“b”绑定类型将此特定字段分块发送。

对于那些想要使用mysqli的
绑定参数('ssbss',$data')
您应该使用
绑定参数('ssssss')
,在执行更新或插入时。这样您可以动态替换所有?在具有存储在数组中的值的准备好的查询中:

call_user_func_array(array($stmt, 'bind_param'), makeValuesReferenced($typeValues));
$typeValues
是使用
array\u merge
array\u unshift
按数组('sssss')和数组(参考var1,参考var2,…)合并的数组

MakeValues引用:

/**
 * 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列中获得空单元格。

数据库中该字段的列类型是什么?
/**
 * 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;
}