从mysql数据库到文本字段的数据通过php?

时间:2012-05-15 15:33:03

标签: php mysql

我已经创建了一个数据库,其中包含一个名为 pages 的表。

在此表格中有以下字段: pages_id pagename pagedesc pagekey pagecont

如何将数据从数据库中的这些字段中提取到可编辑的文本字段?我在下面尝试过,但我的代码无效:(

<?php
// Make a MySQL Connection
mysql_connect("####", "####", "####") or die(mysql_error());
mysql_select_db("####") or die(mysql_error());

// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM pages") 
or die(mysql_error());  

?>
<p>Page title</p><br />
<?php echo"<input name=\"pagename\" type=\"text\" id=\"pagename\" value=\"" .$pagename. "\">"; ?>

<p>Keywords</p><br />
  <?php echo"<input name=\"pagekey\" type=\"text\" id=\"pagekey\" value=\"" .$pagekey. "\">"; ?>

<p>Description</p><br />
<?php echo"<input name=\"pagedesc\" type=\"text\" id=\"pagedesc\" value=\"" .$pagedesc. "\">"; ?>

<p>Content</p><br />
<?php echo "<textarea name=\"pagecont\" cols=\"120\" rows=\"20\" id=\"pagecont\" >".$pagecont."</textarea>";?>

7 个答案:

答案 0 :(得分:1)

您尚未从查询结果中获取一行,并且正在输出未定义的变量。正确的顺序应该是:

$result = mysql_query($sql) or die(mysql_error()); // run the query
$row = mysql_fetch_assoc($row); // fetch a result row

echo $row['name_of_field']; // output one of the result row's data fields.

另请注意,当您按原样将数据输出到HTML表单时,您必须确保输出的数据中没有任何内容会“破坏”表单。例如如果输出文本包含",并且您在表单字段的属性周围使用这些引号,则会“破坏”html。输出到HTML的最佳实践是使用:

<input type="text" name="somefield" value="<?php echo htmlspecialchars($row['name_of_field']) ?>" />

答案 1 :(得分:0)

希望您知道如何连接到MySQL。我包括一个虚拟连接仅供参考。

<?php   
    //Open connection

    $qry="SELECT * FROM <table>";
    $result=mysql_query($qry);


    while($row = mysql_fetch_array($result))
    {
       $variable = $row["column_name"];
    }
?>

HTML:

<input type="text" id="test" value="<?=$variable?>">

如果您尝试获取特定结果,请考虑在SQL语句中使用WHERE子句。有关详细信息,请参阅此处:W3Schools

答案 2 :(得分:0)

<?php
// Make a MySQL Connection
mysql_connect("####", "####", "####") or die(mysql_error());
mysql_select_db("####") or die(mysql_error());

// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM pages") or die(mysql_error());

$result = mysql_fetch_array($result, MYSQL_ASSOC);

foreach($result as $page): ?>

    <p>Page title</p><br />
    <input name="pagename" type="text" id="pagename" value="<?= $page['pagename']; ?>">

    <p>Keywords</p><br />
    <input name="pagekey" type="text" id="pagekey" value="<?= $page['pagekey']; ?>">

    <p>Description</p><br />
    <input name="pagedesc" type="text" id="pagedesc" value="<?= $page['pagedesc']; ?>">

    <p>Content</p><br />
    <textarea name="pagecont" cols="120" rows="20" id="pagecont" ><?= $page['pagecont']; ?></textarea>
    <hr />

<?php endforeach; ?>

答案 3 :(得分:0)

您正在运行查询,但未从中获取结果。试试这个:

$fields = mysql_fetch_assoc($result);

然后,您可以使用$fields['pagename']等参考查询结果。

Documentation here。您可能希望查看一般的mysql模块的文档。

答案 4 :(得分:0)

使用您拥有的表单,您可以一次编辑一(1)行。因此,您需要2页。页面#1列出表格中的所有页面,其中包含指向编辑页面的超链接,将页面密钥作为GET参数传递,页面#2是您的编辑页面,它接收页面ID作为GET参数。

第2页网址可以是:

  

http://domain.com/editpage.php?pagekey=abc

代码如下:

<?php
// Make a MySQL Connection
mysql_connect("####", "####", "####") or die(mysql_error());
mysql_select_db("####") or die(mysql_error());

$key = $_GET['pagekey'];

// Get all the data from the "example" table
$result = mysql_query("SELECT * FROM pages where pagekey = $key")
    or die(mysql_error());  

$row = mysql_fetch_assoc($result);

?>
<p>Page title</p><br />
<?php echo"<input name=\"pagename\" type=\"text\" id=\"pagename\" value=\"" .$row['pagename']. "\">"; ?>

<p>Keywords</p><br />
  <?php echo"<input name=\"pagekey\" type=\"text\" id=\"pagekey\" value=\"" .$row['pagekey']. "\">"; ?>

<p>Description</p><br />
<?php echo"<input name=\"pagedesc\" type=\"text\" id=\"pagedesc\" value=\"" .$row['pagedesc']. "\">"; ?>

<p>Content</p><br />
<?php echo "<textarea name=\"pagecont\" cols=\"120\" rows=\"20\" id=\"pagecont\" >".$row['pagecont']."</textarea>";?>

上面的代码非常基本,但是可以满足您在可编辑输入框中显示行内容的要求。

答案 5 :(得分:0)

我创建了这个函数,可以从列中检索所有数据:

 function page_data($fieldname){

              $result = mysql_query("SELECT ".$fieldname." FROM pages");

              while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                  $arrdata[] =  $row[$fieldname];
              }

              return $arrdata;   
          }

从页面表中检索列为'pagename'的所有数据

    $pagename=array();
    $pagename=page_data('pagename');
    $numpages=count($pagename)-1;

为pagename中的每个值将值回显到文本框

    for($i=0; $i <= $numpages; $i++){
    echo '<input name="pagename" type="text" value=".$pagename[$i]."/>';
    }

答案 6 :(得分:0)

<?php
  // Make a MySQL Connection
  mysql_connect("####", "####", "####") or die(mysql_error());
  mysql_select_db("####") or die(mysql_error());

  // Get all the data from the "example" table
  $result = mysql_query("SELECT * FROM pages") or die(mysql_error());
  while($row = mysql_fetch_array($result))
  {
?>

  <p>Page title</p><br />
  <input name="pagename" type="text" id="pagename" value="<?php echo $row['pagename']; ?>">
  <p>Keywords</p><br />
  <input name="pagekey" type="text" id="pagekey" value="<?php echo $row['pagekey']; ?>">
  <p>Description</p><br />
  <input name="pagedesc" type="text" id="pagedesc" value="<?php echo $row['pagedesc']; ?>">
  <p>Content</p><br />
  <textarea name="pagecont" cols="120" rows="20" id="pagecont"><?php echo $row['pagecont']; ?></textarea>

<?php
  }
?>