我有一个像

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);


防止这种情况发生?

最佳答案

如果未启用严格的SQL模式,并且您为CHAR或VARCHAR列分配的值超过了该列的最大长度,则该值将被截断以适合并生成警告。对于非空格字符的截断,可以通过使用严格的SQL模式导致发生错误(而不是警告)并抑制该值的插入。 https://dev.mysql.com/doc/refman/5.7/en/char.html

10-01 04:23