PHP PDO with Microsoft SQL Server: Prepare Statement issues?

时间:2015-09-14 15:48:19

标签: php sql-server pdo

I am fairly new to PDO. I am trying to run a query(Microsoft Sql Server). Eventually i am going to add more fields after 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

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( ). I am not getting any values?

1 个答案:

答案 0 :(得分:-1)

您可以在执行前使用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();条件来执行条件查询