【发布时间】:2018-01-31 18:20:17
【问题描述】:
我使用 PHP 从 2 个这样的表中获取数据:
<?php
$connStr ='odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};' . 'Dbq=C:\accessfile.accdb;';
$dbh = new PDO($connStr);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * from (SELECT id AS myid, Email FROM `NEW`";
$sql .= " UNION ALL SELECT ID AS myid, `E mail` FROM `OLD`)";
$sql .= " ORDER BY myid ASC";
$sth = $dbh->prepare($sql);
$params=array();
$sth->execute($params);
while ($row = $sth->fetch()) {
//display data here
}
?>
问题 1:当我尝试将别名添加到 id 时,sql 语句出现错误。 我得到的错误是这样的:
Array (
[0] => Array(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -14
[code] => -14
[2] => An invalid parameter was passed to sqlsrv_execute. [message] => An invalid parameter was passed to sqlsrv_execute.
)
)
问题 2:知道我根本无法更改表,我需要我的行结果来知道来自哪个表数据,所以我需要像这样向 id 列添加一个字符串:
SELECT 'new_'+id AS myid, ..... FROM ... OR like this
SELECT CONCAT('New_', id) AS myid, ..... FROM
但以上都不适合我。当我尝试获取这样的行时的结果:
<?php echo $row['myid']; ?>
拥有 new_1、new_2 等或 old_1、old_2 等
有什么想法吗?
提前谢谢你
【问题讨论】:
-
您遇到什么 SQL 错误?将您看到的确切错误告诉我们。
-
我明白了:数组([0] => 数组([0] => IMSSP [SQLSTATE] => IMSSP [1] => -14 [code] => -14 [2] => 向 sqlsrv_execute 传递了一个无效参数。[message] => 向 sqlsrv_execute 传递了一个无效参数。))。
-
给我们完整的代码,尤其是你打电话给
sqlsrv_execute的地方。 -
刚刚做了。从访问数据库文件中检索数据
-
请添加实际sql调用的代码。你用的是哪个sql库?