【问题标题】:Trying to fill form with data from database and no data is being inserted试图用数据库中的数据填充表单并且没有插入数据
【发布时间】:2013-05-05 19:07:11
【问题描述】:

我正在尝试编写将从我的 sql 数据库中获取信息并将其插入要编辑的 html 字段的代码。

我使用的数据库包含

-postid int(10)

-标题文本

-作者文本

-日期日期

-内容文本

-tag1 和 2 都是文本

当我运行错误检查时,我得到的信息是 "array(1) { [0]=> string(5) "00000" }" 在我的代码中是否有任何人可以看到会导致这种情况的内容?我完全没有想法。提前感谢您的任何回复,无论他们是否解决了问题!

编辑:我也只使用数据库中实际存在的 postid,所以不是因为数据库中没有所述 id 的信息。

编辑 2:不同的问题

<?php

include("connect.php");

$delete_message_query = $db->prepare("
    DELETE FROM `blogposts`
    WHERE `postid` = :id
    ")
$delete_message_query->execute(array(
    :id => $_GET["id"]
    )
);


header("Location: edit.php");

?>

尝试使用此代码删除某行。

     <?php
        $id = $_GET["id"];
          include ("connect.php");//database connection
          $get_blog_query = $db->prepare("
            SELECT * FROM `blogposts`
            WHERE `postid` = '$id'
            ");

          $get_blog_query->execute();




          ?>
<!DOCTYPE HTML>
    <html>
    <head>
    <title>Form Edit Data</title>
    </head>

    <body>
    <table border=1>
          <tr>
        <td align=center>Edit Blog Posts</td>
      </tr>
      <tr>
        <td>
          <table>
          <form method="post" action="edit_data.php">
          <input type="hidden" name="id" value="<? echo "$row[postid]"?>">
            <tr>       
              <td>Title</td>
              <td>
                <input type="text" name="title"
            size="20" value="<? echo "$row[title]"?>">
              </td>
            </tr>
            <tr>
              <td>Author</td>
              <td>
                <input type="text" name="address" size="40"
              value="<? echo "$row[author]"?>">
              </td>
            </tr>
            <tr>
              <td>Content</td>
              <td>
                <textarea name='content' rows=10 cols=50 id='content'value="<? echo "$row[content]"?>"></textarea>


            </td>
            </tr>
            <tr>
              <td>Catagory 1</td>
              <td>
                <input type="text" name="address" size="40"
              value="<? echo "$row[tag1]"?>">
              </td>
            </tr>
            <tr>
              <td>Catagory 2</td>
              <td>
                <input type="text" name="address" size="40"
              value="<? echo "$row[tag2]"?>">
              </td>
            </tr>
            <tr>
              <td align="right">
                <input type="submit"
              name="submit value" value="Edit">
              </td>
            </tr>
          </form>
          </table>
        </td>
      </tr>
    </table>
    </body>
    </html>

【问题讨论】:

  • 填充$row的代码在哪里?
  • 我会用什么来得到它会像 $row = $get_blog_query->fetch();
  • 为什么你要尝试你不知道如何使用的语法?我的回答中有一个例子。跟着它
  • 尝试学习它:(

标签: php html mysql pdo


【解决方案1】:

由于某种原因,您没有使用准备好的语句,而您应该使用。
所以,这里是代码

 <?php
 include ("connect.php");//database connection
 $stmt = $db->prepare("SELECT * FROM `blogposts` WHERE `postid` = ?");
 $stmt->execute(array($_GET["id"]));
 $row = $stmt->fetch();
 ?>

还要注意"$row[postid]" 是错误的语法。它必须是$row["postid"]。在 PHP 中,变量必须在没有引号的情况下使用,而引号只能用于分隔字符串。

此外,每个 from 值都应该正确编码。所以,所有这些输出都必须是这样的

<?=htmlspecialchars($row["postid"])?>

【讨论】:

  • fetch() 只会给你一行。也许 $_GET["id"] 也应该在进入 execute() 之前进行清理。
  • 谢谢!这适用于除内容区域之外的所有内容!输入区域和文本区域在语法上有区别吗?
  • 没关系,我通过在区域内回显来修复它!非常感谢您的帮助和快速回复!
  • @Chris 当然。 textarea 没有 value 属性。但输出必须与显示的相同
  • 如果您能再帮忙做一件事,我将永远感激不尽。我正在尝试使用类似的代码进行删除,但我的执行语句无效我已使用代码编辑了主帖子。
【解决方案2】:

$row[postid] 不是一个字符串,它是一个变量,因此不需要引号。但是字段确实需要转义,所以不要使用“$row[title]”,而是尝试 $row['title']

【讨论】:

  • “字段”不需要“转义”。字符串可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 2015-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多