PHP PDO与Microsoft SQL Server:准备语句问题


PHP PDO with Microsoft SQL Server: Prepare Statement issues?

我对PDO相当陌生。我正试图运行查询(Microsoft Sql Server)。最终,我将在WHERE后添加更多字段。

$complex = 'Shipping';
$username= 'username';
$password = 'password';
try {
    $conn = new PDO('sqlsrv:Server=server,1433;Database=dbname', $username, $password);
    $query = "SELECT DATA FROM TrimTable WHERE COMPLEX LIKE ?";
    $stmt = $conn->prepare($query, array($complex));
    $stmt->execute();
    while($row = $stmt->fetch())
    {
        echo "$row'n";
    }
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}

我一直得到这个错误:

致命错误:在

中的非对象上调用成员函数execute()

我做错了什么?

我也试过了:

try {
    $conn = new PDO('sqlsrv:Server=mzrefd39,1433;Database=ger_mapv', $username, $password);
    $sth = $conn->prepare("SELECT AREA FROM TrimTable WHERE COMPLEX LIKE ?");
    $sth->execute(array($complex));
    $data = $sth->fetchAll();
    print_r($data);
}

在我的页面我得到数组()。我没有得到任何值?

您可以在执行之前使用bindParam(),试试下面的代码

$conn = new PDO('sqlsrv:Server=server,1433;Database=dbname', $username, $password);
$query = "SELECT DATA FROM TrimTable WHERE COMPLEX LIKE ?";
$stmt = $conn->prepare($query); // check $complex is removed from this line
$stmt->bindParam(1, $complex);
$stmt->execute();

使用bindParam(); for condition执行查询条件