“'”删除以前的字段数据

时间:2012-03-22 13:26:12

标签: php mysql

我在这里遗漏了一些东西。您可以看到我从逗号分隔的文本文件中获取信息。插入工作正常,直到它到达第二个变量$player_id为空的点。如果它为空,则$town_name会抛出错误。如果它不为空,并且$town_name有一个带有.或其他字符的字符串,则会失败,并且出于某种原因,它就像$player_id一样空了!

我错过了什么!?

非常抱歉。以下是我从代码中获得的响应:

  

75767 ,, 1. + Harlekus%27s + city,519,851,5,414

     

查询无效:您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以获得正确的语法   在第2行''附近使用+ + Harlekus%27s + city',519,851,5,414)

这是我删除“'”.mysql_real_escape_string($ town_name)。“'”时得到的代码,只需用mysql_real_escape_string($ town_name)替换它:

  

80290,2299128,Spencer,414,371,0,3633无效的查询:未知   “字段列表”中的“Spencer”列

mysql_select_db($database_connI, $connI);
ini_set("memory_limit","100M");
mysql_query("towns");
$datafile = gzfile('towns.txt.gz');
if(!is_array($datafile)) die("File could not be opened");

foreach($datafile as $datum){
    list($town_id, $player_id, $town_name, $island_x, $island_y, $number_on_island, $points) = explode(',', $datum);

if(is_null($player_id)) {
    $player_id = 0;
}


    $protectedInsert = sprintf('INSERT INTO towns (`town_id`,`player_id`,`town_name`,`island_x`,`island_y`,`number_on_island`,`town_points`)
        VALUES (%s, %s, %s, %s, %s, %s, %s)',
        $town_id, 
            $player_id,
            "'".mysql_real_escape_string($town_name)."'",
            $island_x,
            $island_y, 
            $number_on_island, 
            $points);

    $freed = mysql_query("TRUNCATE towns");// empty the table before inserting the new data
    $result = mysql_query($protectedInsert);//Re-fill the table with updated data
    if (!$result) {
    print"$town_id, $player_id, $town_name, $island_x, $island_y, $number_on_island, $points <br><br>";
        print"$INSERT <br><br>";
        die('Invalid query: ' . mysql_error());
    }
}
print "The database has been updated";
mysql_close($dbh);

2 个答案:

答案 0 :(得分:0)

我会检查strlen($player_id) vs is_null,因为定义了$ player_id,但它可能有空格或没有值,这并不意味着它是NULL。

这可能是你的问题。

答案 1 :(得分:0)

您应该考虑使用fgecsv(http://php.net/manual/fr/function.fgetcsv.php)