Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 电影数据库中的列表,超链接不';行不通_Php_Mysql_Database - Fatal编程技术网

Php 电影数据库中的列表,超链接不';行不通

Php 电影数据库中的列表,超链接不';行不通,php,mysql,database,Php,Mysql,Database,我正在制作一个电影数据库网站。我想列出100部电影,当你点击其中一部电影时,你会得到关于特定电影的更多信息 我正在使用一个大型电影数据库,这是我的查询: public function selectAll() { $sql = "SELECT * FROM `movies` LIMIT 200"; $stmt = $this->pdo->prepare($sql); $stmt->execute(); return $stmt->fetc

我正在制作一个电影数据库网站。我想列出100部电影,当你点击其中一部电影时,你会得到关于特定电影的更多信息

我正在使用一个大型电影数据库,这是我的查询:

 public function selectAll() {
    $sql = "SELECT * FROM `movies` LIMIT 200";
    $stmt = $this->pdo->prepare($sql);
    $stmt->execute();
    return $stmt->fetchAll(PDO::FETCH_ASSOC);
  }
这是我在控制器中执行的操作:

class MoviesController extends Controller {

  private $movieDAO;

  function __construct() {
    $this->movieDAO = new movieDAO();
  }

  public function index() {
    $this->set('movies', $this->movieDAO->selectAll());
  }
这就是我在索引中所做的:

<?php
     echo "<ol>";
      if(!empty($movies)) {
        foreach($movies as $movie){
         echo "<li><a href=\"index.php?page=detail&amp;id={$movie['id']}>{$movie['title']}</a></li>";
              }
          }
     echo "</ol>";
      ?> 

当我运行这个程序时,我在HTML中得到了一个奇怪的结果:

<a href="index.php?page=detail&amp;id=1&gt;Avatar&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=" index.php?page="detail&amp;id=2">Pirates of the Caribbean: At World's End</a>


a href真的搞砸了,我不知道我做错了什么

您忘了在URL末尾添加一个转义双引号。这应该是这样的:

//                                                      here --v
echo "<li><a href=\"index.php?page=detail&amp;id={$movie['id']}\">{$movie['title']}</a></li>";
//这里--v
回声“
  • ”;
    使用HTML5
    ,您可以为属性值添加引号,如下所示 :

    echo“
  • ”;
    能否检查
    $movies
    的值?在
    foreach
    loop
    echo''中测试这一点。印刷品($movie,true)。”这可能是由于标题中的引号弄乱了字符串,请尝试在PHP函数中包装标题,将每个字符转义为HTML友好字符。@AymDev我照你说的做了,只有id=1,3,5,7,9的电影。。。。你没拿到头衔吗?是的。我只从id=1,3,5,7,9的电影中获得标题。
    
    echo "<li><a href=index.php?page=detail&amp;id={$movie['id']}>{$movie['title']}</a></li>";