Php 基于数组的插入到表中

Php 基于数组的插入到表中,php,mysql,Php,Mysql,我有一个文件名数组 $files = array(); $dirName = getcwd()."/../"; $dir = opendir('../'); // open the cwd..also do an err check. while(false != ($file = readdir($dir))) { if(($file != ".") and ($file != "..") and ($file != "index.php")and ($file != "img") a

我有一个文件名数组

$files = array();
$dirName = getcwd()."/../";
$dir = opendir('../'); // open the cwd..also do an err check.
while(false != ($file = readdir($dir))) {
    if(($file != ".") and ($file != "..") and ($file != "index.php")and ($file != "img") and ($file != "__MACOSX")) {
            $files[] = $file; // put in array.
    }   
}
我想在projects表中为每个文件名插入一条新记录,例如

foreach($files as $file) {  
    $filename = mysql_real_escape_string($file);

    $query = "INSERT INTO `projects` (`id`, `name`) VALUES (NULL,$filename)";
    $result =  mysql_query($query, $connection);
    echo $result;
}

但是现在对数据库有影响。

文件名是字符串,所以它应该在引号中关闭,并且根据您的代码,它是打开的,所以在文件名周围加引号,并且不要传递NULL作为id,如果它是自动递增字段,那么它将相应地添加递增值

将您的查询从

$query = "INSERT INTO `projects` (`id`, `name`) VALUES (NULL,$filename)";


$filename
最有可能是字符串;引用它。您需要检查mysql\u error($connection)以验证此操作的结果。正如@Fred ii-所说,字符串$filename也可以参见。现在不是用不推荐的API编写新代码的时候,而是一个很好的时机,它支持预先准备好的语句(避免引用这样的问题)并提高安全性。就我个人而言,我想解释一下为什么应该以某种方式做一些事情,包括为什么代码失败。@Fred ii-谢谢你的建议,我已经更新了我的答案
$query = "INSERT INTO `projects` (`name`) VALUES ('".$filename."')";