0

我不想发布这个,但最后的手段。

带有 MS SQL Server 2008 的 PHP,我收到以下错误:[SQLSTATE[07002]: [Microsoft][ODBC Driver 11 for SQL Server]COUNT 字段不正确或语法错误这是我的代码:

    $server_name = 'sqlserver';
    $user = 'user';   
    $passwd = 'pass';

    $sqlString = "INSERT INTO dbo.tbl (UniqID, rideid, stopRatingId, category, ddescription, rating, createdDate) VALUES (?, ?, ?, ?, ?, ?, ?)";

    $conn = new PDO("sqlsrv:Server=$server_name;Database=db;ConnectionPooling=0", $user, $passwd);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare($sqlString);

    $sqlVals = "'1', '233', '34', 'Delivery', 'Data Integrity', 'Good', '2018-07-11 08:34:21'";
    $stmt->execute(array($sqlVals));

数组显示:

print_r(array($sqlVals));

Array ( [0] => '1', '233', '34', 'Delivery', 'Data Integrity', 'Good', '2018-07-11 08:34:21' ) 

当我尝试这个时,插入成功且没有错误:

$stmt->execute(array('1', '233', '34', 'Delivery', 'Data Integrity', 'Good', '2018-07-11 08:34:21'));

不知道如何纠正 - 非常感谢任何帮助!

4

1 回答 1

2

在第一个示例中,$sqlVals 被视为 1 个字符串值而不是不同的值

所以你可以试试这个

$sqlVals = array('1', '233', '34', 'Delivery', 'Data Integrity', 'Good', '2018-07-11 08:34:21');

$stmt->execute($sqlVals);
于 2018-07-20T13:24:42.530 回答