PHP 内部的 COUNT 字段不正确或语法错误

Posted

技术标签:

【中文标题】PHP 内部的 COUNT 字段不正确或语法错误【英文标题】:COUNT field incorrect or syntax error inside of PHP 【发布时间】:2017-07-19 09:32:52 【问题描述】:

一旦在网络上单击按钮,我正在对表格中的数据进行更改,但出现下一个错误:

Array
(
    [0] => Array
        (
            [0] => 07002
            [SQLSTATE] => 07002
            [1] => 0
            [code] => 0
            [2] => [Microsoft][ODBC Driver 13 for SQL Server]COUNT field incorrect or syntax error
            [message] => [Microsoft][ODBC Driver 13 for SQL Server]COUNT field incorrect or syntax error
        )

)

我已经检查了几个小时的代码,但我没有发现错字。这是代码:

<?php
ini_set('max_execution_time', 300);
$serverName = "serverName\SQLEXPRESS";
$connectionInfo = array( "Database"=>"dataBase", "UID"=>"user", "PWD"=>"pass");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn === false )                                   
die( print_r( sqlsrv_errors(), true));


$sql1 = "DECLARE @a INT ". PHP_EOL;
$sql1 .= "SELECT @a = condLot FROM productos WHERE prodID = ? ". PHP_EOL;
$sql1 .= "IF (@a > 0) ". PHP_EOL;
$sql1 .= "UPDATE productos SET estadoAl = (estadoAl + 1), condLot = (condLot - 1) FROM productos WHERE prodID = ? ". PHP_EOL;
$sql1 .= "ELSE ". PHP_EOL;
$sql1 .= "UPDATE productos SET estadoAl = (estadoAl + 1) FROM productos WHERE prodID = ? ". PHP_EOL;
$var = array($_GET["idProd"]);


$stmt1 = sqlsrv_query( $conn, $sql1, $var);
if( $stmt1 === false ) 
    die( print_r( sqlsrv_errors(), true));

【问题讨论】:

我很确定,您的更新查询的语法不正确 从更新查询中删除 FROM productos @Ravi 在 SQL Server MS 中有效,但请解释一下出了什么问题。 谢谢,@B.Desai。我不明白为什么在 SQL Server MS 中使用“FROM”。 【参考方案1】:

更新查询没有from 子句。试试下面的代码。

$sql1 .= "UPDATE productos SET estadoAl = (estadoAl + 1), condLot = (condLot - 1) WHERE prodID = ? ". PHP_EOL;

【讨论】:

谢谢。就像我在评论中写的那样,我不明白为什么在 SQL Server MS 中使用“FROM”。 据我所知,如果使用From 子句,即使是SQL Server 也会抛出错误。无论是否有效,从技术上讲,更新查询都没有 from 子句。

以上是关于PHP 内部的 COUNT 字段不正确或语法错误的主要内容,如果未能解决你的问题,请参考以下文章

07002 [Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误

php: 警告:重命名文件名、目录名或卷标语法不正确。 (代码:123)

RODBC 与 ms-access 错误 07002 17 [Microsoft][ODBC Microsoft Access Driver]COUNT 字段不正确

出现错误 `''' 附近的语法不正确。 ` 使用 PHP 创建 MSSQL 表时

oracle case语数据类型不一致问题

文件名,目录名或卷标语法不正确,错误代码:0x8007007B