我有一个像
这样的功能function log_visitor_info ( $ip, $pgurl, $refurl, $aginfo )
{
global $wpdb, $ipsToIgnore;
if (!in_array($ip, $ipsToIgnore)) $wpdb->insert('wp_nas_visits', array('ip'=>$ip,'refurl'=>$refurl,'pgurl'=>$pgurl,'aginfo'=>$aginfo));
}
将行插入我的MySQL数据库,并想知道如果有一个值要输入到列中,会发生什么。例如,列aginfo
的类型为VARCAHR (250)
,那么如果字符串$aginfo
的长度为251,会发生什么?我的网站会崩溃吗?我是否需要通过执行类似
if ( strlen($aginfo) > 250 ) $aginfo = substr($aginfo, 0, 250);
要防范这个?
答案 0 :(得分:2)
如果未启用严格SQL模式,并且您为CHAR或VARCHAR列分配的值超出了列的最大长度,则会截断该值以使其适合并生成警告。对于非空格字符的截断,可以导致发生错误(而不是警告),并通过使用严格的SQL模式来禁止插入值。 https://dev.mysql.com/doc/refman/5.7/en/char.html