我正在构建一个简单的 CMS 系统,但在我的代码中遇到了问题,我无法弄清楚哪里出了问题。
对于有经验的 PHP 开发人员来说,这应该是一个简单的修复。 HTML 文档中的一行 PHP 失败。
这是失败的代码行(以及一些周围的代码):
<?php $page = getPages($_GET["id"]); ?>
<h2>Edit Page</h2>
<div>
<?php //echo returnPageError(); ?>
</div>
<form class="" action="/mycms/includes/process_edit.php" method="post">
<input type="hidden" name="id" value="<?php echo $page['id']; ?>" > <!-- this is the line where my HTML cuts off on output
<div class="mui-textfield mui-textfield--float-label">
<input type="text" name="title" id="title" value="<?php echo $page['title']; ?>" >
<label>Title</label>
</div>
这是 getPages()
功能:
function getPages(){
$pdo = DB::getConnection();
$sql = "SELECT id, title, body FROM pages";
$result = $pdo->query($sql);
return $result;
}
如果我做 <?php var_dump($page); exit(); ?>
在 <?php $page = getPages($_GET["id"]); ?>
之后它提供了以下信息:
/home/jack/server.files/www/php/mycms/pages/edit.php:5: object(PDOStatement)[2] public 'queryString' => string 'SELECT id, title, body FROM pages' (length=33)
如果我做 <?php var_dump($page["id"]); exit(); ?>
在 <?php $page = getPages($_GET["id"]); ?>
之后它什么都不做!
开发工具中的控制台输出显示它在此处切断了 HTML 输出:
<form class="" action="/mycms/includes/process_edit.php" method="post">
<input type="hidden" name="id" value="
我已经尝试并尝试解决这个问题,但其中一种情况是我的代码所特有的,因此在线搜索没有解决任何问题,正如我所说,对于有经验的 PHP 开发人员来说,这应该是一个简单的纠正。
最佳答案
您的 getPages 函数正在返回一个 PDOStatement 对象,而您正试图将其用作数组:$page["id"],这是无效语法。这会抛出一个您可能看不到的 fatal error ,它会停止脚本的执行。所以首先,如果可以的话,您可能想要打开错误报告。
其次,PDOStatement 对象具有实际从您的查询返回数据库行的函数。
在getPages中,你想返回:
$result->fetch(PDO::FETCH_ASSOC)
请记住,这只会返回查询的第一行,即搜索所有页面。
您还向 getPages 传递了一个变量,但没有使用它。从您的代码中,我无法判断您要做什么。似乎您将 GET 请求“id”变量传递给函数,然后查询数据库以获取相同的“id”...
见
关于php - 我的 PHP 语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40351580/