尽管准备好的语句是正确的,但 php pdo 查询无法返回结果

标签 php mysql pdo

我有以下 php/pdo,它调用一个返回文件名的 mysql 过程,但是尽管准备好的语句是正确的并从剪切和粘贴的数据库查询中返回以下内容:

数据库查询/结果

>     call sp_CDRbyCustomer('Wind', 'R2X', DATE(DATE_SUB(NOW(), INTERVAL 10 WEEK)), DATE(NOW()));
>     +------------------------------------------------------+
>     | Exported filename                                    |
>     +------------------------------------------------------+
>     | '/tmp/CDR_for_Wind_20140704-20140912_1410516460.csv' |
>     +------------------------------------------------------+
>     1 row in set (0.02 sec)

php/pdo

应该返回我们的文件名是:

include('db.ini');

define('DEBUG', true);
if (DEBUG ) {
        openlog("$iam", LOG_PID | LOG_ODELAY,LOG_LOCAL4);
        syslog(LOG_INFO, "START OF DEBUG LOG.");
}

/***** connect to database using db.ini for credentials *****/
try {
$dbConn =  new PDO('mysql:host='.$host.';dbname='.$db, $dbUser, $dbPass, array (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION));

} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

$structure_name = "'Wind'";
$cug_uid = "'R2X'";
$num_weeks = 10;

/**** Query - export file name ****/
$sqlQuery4filename = ("
call sp_CDRbyCustomer($structure_name, $cug_uid, DATE(DATE_SUB(NOW(), INTERVAL $num_weeks WEEK)), DATE(NOW()))
");
$sqlQuery4filename = preg_replace( "/\r|\n/", "", $sqlQuery4filename );

    debug("01: sqlQueryfile string is '" . $sqlQuery4filename . "'");
    $stmnt = $dbConn->prepare($sqlQuery4filename);
    debug($stmnt);
    $stmnt->execute();
    $stmnt->closeCursor();
    $filename = $stmnt->fetch(PDO::FETCH_ASSOC);
    $filename = $filename['Exported filename'];
    debug("01: filename string is '" . $filename . "'");

function debug($debug) {
if(!DEBUG) return;

print '
<div class="debug">
';
print_r($debug);
print '
</div><!-- end of debug -->
';
}

但是我只返回一个空字符串。

我有过这个工作,但是在颠覆它之后我得到了错误的版本并且无法再让它工作,任何人都给我任何关于我做错了什么的线索。

最佳答案

你需要正确调试这个:

  1. 查看您执行的确切 SQL 命令是什么(我无法从您的问题中判断)。
  2. 针对数据库测试命令,例如使用 PHPmyAdmin。
  3. 显示 fetch() 结果是什么,然后再将其作为数组访问。

如果您从头到尾跟踪 PHP 执行试验,您应该能够找出哪里出了问题。

关于尽管准备好的语句是正确的,但 php pdo 查询无法返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25806800/

相关文章:

PHP - 如何首先在几分钟内显示发布的广告,然后是几小时,然后是几天,然后是几个月

php - 如何管理网页浏览数据库

php 准备好的语句 ||语法错误或访问冲突 : 1064

php - 将数组重构(转置)为唯一键

php - 仅允许从 1 个 IP 地址访问所有文件并将所有其他文件重定向到其他文件

php - php 中只有没有字段的值

php - 在函数中使用 PDO 返回一些值

php - PDO 不转义字符串引号

php - 获取 HTML 文档中的 PHP 文件

java - CriteriaQuery 返回错误结果