PHP ODBC PDO bindParam导致;必须声明标量变量@P1";
长话短说,我需要使用PHP、PDO和ODBC连接到Microsoft Azure数据库。但是,我无法在查询中使用参数,而不会出现以下错误(我已删除了一些信息) 这是我的密码:PHP ODBC PDO bindParam导致;必须声明标量变量@P1";,php,pdo,odbc,azure-sql-database,Php,Pdo,Odbc,Azure Sql Database,长话短说,我需要使用PHP、PDO和ODBC连接到Microsoft Azure数据库。但是,我无法在查询中使用参数,而不会出现以下错误(我已删除了一些信息) 这是我的密码: // Establish connection $db = new \PDO($dsn, $user, $password); $lastName = '%{Bank2}%'; // Option 1 - Does not work $query = "SELECT *
// Establish connection
$db = new \PDO($dsn, $user, $password);
$lastName = '%{Bank2}%';
// Option 1 - Does not work
$query = "SELECT * FROM contact WHERE lastName LIKE ?";
$prep = $db->prepare($query);
$prep->execute([$lastName]);
$results1 = $prep->fetchAll(PDO::FETCH_ASSOC);
$error1 = $prep->errorInfo();
// Option 2 - Does not work
$query = "SELECT * FROM contact WHERE lastName LIKE ?";
$prep = $db->prepare($query);
$prep->bindParam(1, $lastName);
$prep->execute();
$results2 = $prep->fetchAll(PDO::FETCH_ASSOC);
$error2 = $prep->errorInfo();
// Option 3 - Does not work
$query = "SELECT * FROM contact WHERE lastName LIKE :lastName";
$prep = $db->prepare($query);
$prep->bindValue(':lastName', $lastName);
$prep->execute();
$results3 = $prep->fetchAll(PDO::FETCH_ASSOC);
$error3 = $prep->errorInfo();
我已尝试将param类型添加到绑定$prep->bindValue(':lastName',$lastName,PDO::param_STR)
,但没有解决任何问题
我知道我的连接很好,因为下面的查询工作正常并返回结果:
$query = "SELECT * FROM contact WHERE lastName LIKE '%Bank2%'";
$prep = $db->prepare($query);
$prep->execute();
$results = $prep->fetchAll(PDO::FETCH_ASSOC);
你知道为什么这不起作用吗
这是使用PHP安装说明在PHP 7.4.5上运行的:
也许你可以参考这个例子::
你也可以参考这个问题的答案:,其他人给了我们更多的指导
HTH.您可能会发现一些参数设置错误的语句。请参考教程:。它给出了带有参数的查询/更新示例。感谢您的文章,但似乎没有帮助。这是一个SQL Server数据库,不是PostgreSQL。它无法连接@LeonYueHi@aceithamer,很抱歉发布了错误的链接,请参考此示例:。Hi@sceithamer,希望你做得很好,你有什么进展吗?如果答案对你有帮助,希望你能接受它作为答案。这可能对其他社区成员有益。如果您已经解决了这个问题,欢迎向我们分享细节,我们可以向您学习。非常感谢。
$query = "SELECT * FROM contact WHERE lastName LIKE '%Bank2%'";
$prep = $db->prepare($query);
$prep->execute();
$results = $prep->fetchAll(PDO::FETCH_ASSOC);
./configure --with-pdo-odbc=unixODBC,/usr/local
<?php
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->bindParam(1, $calories, PDO::PARAM_INT);
$sth->bindParam(2, $colour, PDO::PARAM_STR, 12);
$sth->execute();
?>