如何在foreach循环中绑定pdo值

时间:2013-07-19 13:28:32

标签: php sql pdo

我有这个为PHP(PDO)编写的代码 - > SQL服务器。它不会抛出任何错误,但不会从DB返回任何内容。我已经尝试在SQL服务器管理工​​作室中运行它输出的SQL,它的工作完美。此外,我输出的参数绑定在一起,以确保它看起来很好,它确实。由于某些原因,执行时绑定会阻止SQL正常运行。这种方法有问题吗?甚至可以在数组循环中绑定,就像我在这里尝试一样?代码在下面,提前谢谢。

public function insertStaff( $table, $param )
{
    $qStr = '';
    foreach( $_POST as $k => $v )
    {
        if( $k == 'dummy' || $v == '' )
        {
            $qStr .= '';
        }
        else
        {
            $qStr .= '?,';
        }
    }
    $qStr = rtrim( $qStr, ',' );
    $sql = "INSERT INTO ? ($qStr) VALUES ($qStr)";
    $stmt = $this->c->prepare( $sql );
    //bind table
    $stmt->bindValue( 1, $table, PDO::PARAM_STR );
                        $output = '';
    $x = 2;
    foreach( $_POST as $k => $v )
    {
        if( $k !== 'dummy' && $v !== '' )
        {
            $stmt->bindValue( $x, $k, PDO::PARAM_STR );
            $output .= '<hr>'.$x.' => '.$k;
            $x++;
        }
    }
    foreach( $_POST as $k => $v )
    {
        if( $k !== 'dummy' && $v !== '' )
        {
            $stmt->bindValue( $x, $v, PDO::PARAM_STR );
            $output .= '<hr>'.$x.' => '.$v;
            $x++;
        }
    }
    //return $output;
    if( $stmt->execute() )
    {
        return 'success';
    }
    else
    {
        return 'fail';
    }
}

0 个答案:

没有答案