简体   繁体   English

带有Microsoft SQL Server的PHP PDO:准备语句问题?

[英]PHP PDO with Microsoft SQL Server: Prepare Statement issues?

I am fairly new to PDO. 我对PDO相当陌生。 I am trying to run a query(Microsoft Sql Server). 我正在尝试运行查询(Microsoft Sql Server)。 Eventually i am going to add more fields after WHERE. 最终,我将在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();
}

I keep getting this error: 我不断收到此错误:

Fatal error: Call to a member function execute() on a non-object in 致命错误:在非对象中调用成员函数execute()

What am i doing wrong? 我究竟做错了什么?

UPDATE 更新

I tried this as well: 我也尝试过这个:

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);
}

In my page i get Array( ). 在我的页面中,我得到Array()。 I am not getting any values? 我没有任何价值吗?

You can use bindParam() before execute, Try this code 您可以在执行之前使用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();

Use bindParam(); 使用bindParam(); for condition to execute query for conditions 条件查询条件查询

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM