Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 如何通过db的id从db中获取内容的标题_Php_Mysql - Fatal编程技术网

Php 如何通过db的id从db中获取内容的标题

Php 如何通过db的id从db中获取内容的标题,php,mysql,Php,Mysql,我需要从db获得类别的标题,但我有这个类别的id。类别和内容具有不同的表,但内容通过字段类别与类别表连接。如何加载类别的标题而不是id 创建内容的代码如下所示: <form action="create_content.php" method="POST" id="content_form" enctype="multipart/form-data" > <div class="content_text"> <p><

我需要从db获得类别的标题,但我有这个类别的id。类别和内容具有不同的表,但内容通过字段类别与类别表连接。如何加载类别的标题而不是id

创建内容的代码如下所示:

 <form action="create_content.php" method="POST" id="content_form" enctype="multipart/form-data" >
        <div class="content_text">
           <p><label for="title">Title:</label></p>
                <input type="text" name="title" value="">
        </div>                  
        <div class="content_textarea">
            <p><label for="text">Text</label></p>
                <textarea name="text" id="text" cols="30" rows="20" form="content_form">    
                </textarea></div>
        <p><label for="text">Add image</label></p>
        <div class='add_image'><input type="file" name="content_pic"></div>                 
        <select name="category">
            <?php foreach ($result as $item) {?>
                <option value="<?php print $item['id'] ?>"><?php print $item['cat_title'] ?>                                
                </option> <?php }?>
        </select>                                       
        <div class="submit_content">
            <input type="submit" value="Send"></div>
 </form>


create_content($_POST['title'], $_POST['text'], $_FILES['content_pic'], $_POST['category']);



function create_content($title, $text, $content_pic, $category) {

      $title = trim($title);
      $text = trim($text);
      $category= $category;

      if (!empty($content_pic)) {
        if ($content_pic ["error"] == UPLOAD_ERR_OK) {
          $uploads_dir = __DIR__ . '/files';
              $tmp_name = $content_pic ["tmp_name"];
              $name = $content_pic ["name"];
              if (move_uploaded_file($tmp_name, "{$uploads_dir}/{$name}")) {
                $content_pic = "files/{$name}";
              }
        }
      } 

      $db = database_connect();
      /*if ($id) {
      $stmt = $db->prepare("UPDATE INTO content (id, title,text) VALUES (?, ?, ?)");
      $stmt -> execute(array($title ,$text, $id ));
      }
      else {*/

      $stmt = $db->prepare("INSERT INTO content (`title`,
              `text`,`content_pic`, `category`, `author`, `time`) 
              VALUES (?, ?, ?, ?, ?, ?)"); 
      $stmt -> execute(array($title, $text, $content_pic, $category, $_SESSION['user_id'], time()));  

      header("Location: review.php?id=" . $insertId=$db->lastInsertId());
      exit();

    }
呈现视图的代码:

    $id = $_GET['id'];
    $select_query = "SELECT `c`.`title`,`c`.`content_pic`,`c`.`text`,
                            `c`.`status`,`c`.`category`, `u`.`login`, 
                            `u`.`id` AS `user_id`, `c`.`time`
                       FROM content c
                  LEFT JOIN users u ON c.author= u.id 
                      WHERE c.id = ?";

      $db = database_connect();
      $stmt = $db->prepare($select_query);
      $stmt->execute(array($id));
      $result = $stmt->fetch(PDO::FETCH_ASSOC);

      if ($result) {
        $row = $result;
        $title = $row['title'];
        $content_pic =  $row['content_pic'];
        $text =  $row['text'];
        $category= $row['category'];
        $created = !empty($row['time']) ? date('d.m.Y H:i', $row['time']) : '';
        $author = 'Anonymous';
        if (!empty($row['login'])) {
          $author = '<a href="review_account.php?id=' . $row['user_id'] .
                    '">' . $row['login'] . '</a>';
          }
      }

    ?>
<?php if ($result) {?>
        <div id="destinations_content">
            <div id="item_view">
                <div class="items">
                    <div class="items_title">                   
                        <?php print $title ?>                   
                    <br>
                    </div>
                    <div class="my_pic">
                        <img src="<?php print $content_pic ?>" alt="">
                    </div>
                <?php print $text ?><br>

              <?php print $created?>
                </div>
             <?php print $category ?>
            </div>
        </div>   
<?php }?>

为什么不加入分类表来获得分类标题呢。因为您已将内容表映射到类别表。我假定您的类别表名称为category。如何获得$row['cat_title'],我在select查询中没有看到任何cat_title

$select_query = "SELECT `c`.`title`,`c`.`content_pic`,`c`.`text`,`c`.`status`,`c`.`category`, `u`.`login`, `u`.`id` AS `user_id`, `c`.`time`, cat.title as cat_title
FROM content c
LEFT JOIN users u ON c.author= u.id
INNER JOIN categories cat ON c.category= cat.id  
WHERE c.id =."(int)$id;

你不能只回显你的$row['title']或者在本例中$title你得到了什么?我不能回显它,因为我只有category的id,但没有title.table称为categories。这一行$row['cat_title']在这里是错误的。当您运行查询时,您会选择什么?是否将类别表更改为类别?回响打印结果;死亡那么让我看看?你想要类别标题还是项目标题?如果我输入你的代码,即使使用打印,它也不会显示任何内容,是的,我将其更改为categoriesecho$select\u查询;在phpmyadmin中运行结果。看看会发生什么?