PHP错误的mysql_query()参数计数 - 可能的语法错误

时间:2011-03-20 21:38:59

标签: php mysql

我一直在争论这个问题,我不熟悉PHP语法,这是我的代码:

    $eventArray = array($this->ReturnLastRecordId() + 1, $managerid, $title, $description, $category, $address, $location, $startdate, $starttime, $enddate, $endtime, $price, $endofticketdate, $totalseats,  $totalseats);
    $sql = "INSERT INTO event (eventid, managerid, title, description, category, address, location, startdate, starttime, enddate, endtime, price, endofticketdate, totalseats, totalseats)";
    $data->StoreData($eventArray, $sql);

在功能中:

public function StoreData($dataArray, $sqlquery)
    {

        include 'config.php';

        $i = count($dataArray);
        echo $i;
        switch ($i) {
            case 15:
            mysql_query($sqlquery . "VALUES (" . '$arraydata[0]' ,   '$arraydata[1]',  '$arraydata[2]',  '$arraydata[3]', '$arraydata[4]', '$arraydata[5]', '$arraydata[6]', '$arraydata[7]', '$arraydata[8]', '$arraydata[9]',  '$arraydata[10]', '$arraydata[11]', '$arraydata[12]',  '$arraydata[13]',  '$arraydata[14]' . ")", $con) or die (mysql_error());
            mysql_close($con);
                break;

        }
    }

显然,我已多次检查参数的数量,包括数据库,但仍会抛出参数计数:(。

4 个答案:

答案 0 :(得分:1)

您没有连接SQL字符串。您的代码传递了多个单独的PHP函数参数。

最懒的解决办法是:

 $values = implode("','", $arraydata);

 mysql_query("$sqlquery VALUES ('$values')");

我建议你用双引号括起mysql_query期望的整个单字符串,然后在其中使用字符串插值。避免手动.连接。

答案 1 :(得分:0)

你的sql查询的连接是错误的。解决方案中的逗号位于字符串之外,因此由php解释为其他参数。

它应该是这样的:

    mysql_query($sqlquery . " VALUES ('$arraydata[0]' ,   '$arraydata[1]', )

等等。

答案 2 :(得分:0)

在构建SQL查询时,您使用了连接操作数.。 试试以下内容:

public function StoreData($dataArray, $sqlquery) {

    include 'config.php';

    $i = count($dataArray);
    echo $i;
    switch ($i) {
        case 15:
            mysql_query($sqlquery . " VALUES ('{$arraydata[0]}', '{$arraydata[1]}', '{$arraydata[2]}', '{$arraydata[3]}', '{$arraydata[4]}', '{$arraydata[5]}', '{$arraydata[6]}', '{$arraydata[7]}', '{$arraydata[8]}', '{$arraydata[9]}', '{$arraydata[10]}', '{$arraydata[11]}', '{$arraydata[12]}', '{$arraydata[13]}', '{$arraydata[14]}')", $con) or die (mysql_error());
            mysql_close($con);
            break;
    }
}

答案 3 :(得分:0)

尝试修改代码:

    $eventArray = array(($this->ReturnLastRecordId() + 1), $managerid, $title, $description, $category, $address, $location, $startdate, $starttime, $enddate, $endtime, $price, $endofticketdate, $totalseats,  $totalseats);
    $sql = "INSERT INTO event (eventid, managerid, title, description, category, address, location, startdate, starttime, enddate, endtime, price, endofticketdate, totalseats, totalseats)";
    $data->StoreData($eventArray, $sql);

public function StoreData($dataArray, $sqlquery)
    {

        include 'config.php';

        $i = count($dataArray);
        echo $i;
        switch ($i) {
            case 15:
            mysql_query($sqlquery . " VALUES (" . '$arraydata[0]' ,   '$arraydata[1]',  '$arraydata[2]',  '$arraydata[3]', '$arraydata[4]', '$arraydata[5]', '$arraydata[6]', '$arraydata[7]', '$arraydata[8]', '$arraydata[9]',  '$arraydata[10]', '$arraydata[11]', '$arraydata[12]',  '$arraydata[13]',  '$arraydata[14]' . ")", $con) or die (mysql_error());
            mysql_close($con);
                break;

        }
    }