PHP MySQL INSERT查询不再工作(昨天工作)


PHP MySQL INSERT query no longer works (was working yesterday)

我有一个INSERT查询问题。

问题来了:
昨天我用这个代码上传数据,它工作得很好。今天,当我在表单上点击提交时,它只显示一个空白页面。没有错误,只是空白。错误日志中没有任何内容。所有SELECT查询工作正常,所以SELECT Count(id)查询仍然工作。


  • 重新上传到服务器
  • 语法调整例如' ' ' .$v。"代替"$v"
  • 添加打印行来检查变量是否为空。一切正常,所有数据都在INSERT查询之前出现。
  • 通过PHP测试插入我的admin,一切正常
  • 函数调用是正确的-它是并且保持不变从昨天

函数获取一个物种、一个科和一个属的列表,然后将它们添加到数据库中。以下是代码(未打包的版本-两者昨天都在工作):

error_reporting(E_ALL);
ini_set('display_errors', '1');


    function submit($family, $genus, $species){

        //require statement
        require 'databaseConnect.php';
        //get num of species
        if(!($result = mysql_query("SELECT Count(id) as num FROM speciesList", $connection))) mysql_error();
            $nums = mysql_fetch_row($result);
            $num=$nums[0];
        //parse species 
        $holder="";
        $array = Array();
        while(strlen($species)!=0){
            if($species[0]==';'){
                $array[] = $holder;
                $holder="";
            }else{
            $holder = $holder . $species[0];
            }
            $species=substr($species, 1);
        }
        foreach($array as $v){
            $num++;
            if(!(mysql_query("INSERT INTO speciesList VALUES($num, '$family', '$genus', '.$v')", $connection))){
                mysql_error();
            }else{
                print "success ";
            }
        }
        mysql_close($connection);
    }

提前感谢你,这个问题对我来说相当神秘!Em

您永远永远不想使用字符串替换参数来构建SQL语句,因为它使您容易受到SQL注入攻击。而是绑定你的参数。

您的代码没有返回错误,因为您调用了mysql_error()并忽略了返回值。它返回错误字符串,所以您希望代码更像这样:

if(!(mysql_query("INSERT INTO speciesList VALUES($num, '$family', '$genus', '.$v')", $connection))){
    print_r( mysql_error() );
}else{
    print "success ";
}

如果你需要帮助理解错误,一旦你看到它,请张贴在这里。

 if(!(mysql_query("INSERT INTO speciesList VALUES($num, '$family', '$genus', '.$v')", $connection))){
               echo mysql_error();
            }else{

可能还有其他错误,但是mysql_error()函数返回一个字符串。您的脚本需要采取一些操作来显示字符串。

我发现更好的方法是分别构造变量,这样就可以显示它们。我不确定你想不想在$v前加这个点。看看这对你是否有意义。

foreach($array as $v)
{
    $num++;
    $sql = "INSERT INTO speciesList VALUES($num, '$family', '$genus', '$v')";
    $res = mysql_query($sql);
    if (!$res) die("FAIL: $sql BECAUSE: " . mysql_error());
    echo "<br/>SUCCESS: $sql";
}