PHP MySQL INSERT查询不再有效(昨天正常工作)

时间:2012-12-30 18:06:03

标签: php mysql insert

我遇到INSERT查询问题。

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

以下是我的尝试:

  • 重新上传到服务器
  • 语法调整,例如'“。$ v。'”而不是'$ v'
  • 添加打印行以检查没有变量为空。一切正常,所有数据都出现在INSERT查询之前。
  • 通过PHP我的管理员测试插入,一切正常
  • 函数调用是正确的 - 它在昨天
  • 中保持不变

该函数获取物种,家族和属的列表,然后将它们添加到数据库中。 这是代码(非santised版本 - 两者都在昨天工作):

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

2 个答案:

答案 0 :(得分:1)

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

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

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

如果您在看到错误后需要帮助,请在此处发布。

答案 1 :(得分:0)

 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";
}