PDO-> fetchAll()行为

时间:2015-10-16 00:22:58

标签: php pdo fetch

我为其他人接管了一个MAMP版本的网络应用程序,并尝试将其联机。

Web应用程序调用API,然后将从API接收的数据加载到mySQL数据库中,然后在浏览器中显示一些结果。这是通过PHP和javascript的组合完成的,包括AJAX。

为了简化代码,创建了一个generalQuery.php文件,该文件接收来自各种函数的参数并在数据库上执行查询。这在本地MAMP版本上完美地工作,但是一旦在线(hostmonster),当我执行将LOADS数据加载到数据库中的查询时,我得到“内部错误”代码500。但是,当我执行试图从数据库中提取数据的查询时,我没有收到任何错误。我跟踪错误是由PDO fetchAll函数引起的。

$dbh = GetConnection();
// get the query results

$dataEncoded  = $_POST ['jsonData'];
$literal = json_decode($dataEncoded, true);

$stmt = $dbh->query($literal); 
$stmt->setFetchMode(PDO::FETCH_NUM);        
$records = $stmt->fetchAll();

GetConnection()函数调用建立PDO连接的单独文件。

为什么代码在MAMP中工作但在hostmonster服务器上没有的任何想法?

是我在加载到数据库时遇到错误的原因,但是在查询时没有,因为fetch实际操作的是查询结果而不是数据库本身?

这被标记为重复的问题

提前致谢!

更新:
服务器错误是 - PHP致命错误:带有消息'SQLSTATE [HY000]的未捕获异常'PDOException':常规错误:2053 并被追溯到 - PDOStatement->使用fetchall()

但是,经过进一步的故障排除后,我发现即使发生错误,数据库实际上也会被查询修改。我仍然想修复错误,这篇文章被标记为重复的问题。如果问题的这一部分无法回答,那么我仍然想知道如何使架构更加安全,正如迈克所指出的那样。我是网络开发人员的新手,你能指出我如何解决我的安全问题的正确方向吗?由于数据是从API获取的,除了让客户端执行此操作之外,还有其他方式来形成查询吗?

0 个答案:

没有答案