2012-08-06 43 views
1

我有一个名为“negwords”的textarea的简单表单。如果textarea中有数据,每行都会被\ n分解,然后我将这些值插入到数据库中,并放入名为“negatives”的表中,该表只包含两个字段(id,负数)。从Textarea删除空行或空行行以避免将空白行插入数据库

问题是,如果存在并提交空的或空白的回车符,我的数据库中会出现空白记录。

如何避免从textarea提交空行或空行?

<form action="insert.php" method="post"> 
<textarea class="" cols="110" rows="30" name="negwords"></textarea> 
    <input type="submit" name="submit" value="Submit" /> 
    </form>  
    </div> 
    <div id="results"> 
<?php 
include 'db_connect.php'; 

if(isset($_POST["negwords"])) 
{ 
    //$negative_keyword = explode("\n", $_POST["negwords"]); 

    $negative_keyword = array_filter(explode("\n", trim($_POST['negwords']))); 
    foreach($negative_keyword as $key => $phrase) 
{ 
    $phrase=trim($phrase); 
    $sql = "INSERT IGNORE INTO negatives (negative) VALUE ('{$phrase}')"; 

    mysql_query($sql); 
} 
} 
?> 
+0

您的代码容易受到SQL注入攻击。阅读更多:http://en.wikipedia.org/wiki/SQL_injection – heikkim 2012-08-13 08:25:40

回答

0

通过

if (strlen($phrase) > 0) { mysql_query($sql); } 

而且还更换mysql_query($sql);,作为一个侧面说明:我强烈推荐开关从MySQL,它被废弃到mysqli的。

+0

'strlen(trim($ phrase))'会更合适。 – mAu 2012-08-13 08:27:22

+0

strlen counts \ r和\ n所以这不会有帮助。 – heikkim 2012-08-13 08:27:24

+1

@mAu他已经修剪过这两行。 – 2012-08-13 08:30:03