从MySQL数据库到文本字段通过PHP的数据?

问题描述:

我已经创建了一个名为页的表的数据库,其中包含从MySQL数据库到文本字段通过PHP的数据?

在这个表中有所谓的pages_id页面名称pagedescpagekeypagecont领域。

如何从数据库中的这些字段中将数据提取到可编辑的文本字段? 。我已经试过以下,但我的代码是不工作:(

<?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>";?> 

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

$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']) ?>" /> 

希望你知道如何连接到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

+0

不要做“”,这是一个讨厌的速记。请改用。 – Leo

+0

为什么?我总是被教导它是完全有效的。 –

+0

是的,它是有效的,但 Leo

<?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; ?> 
+0

$ pagename,$ pagekey等定义在哪里?此外,你可以使用mysql_fetch_assoc(),并在假设它是一个数组之前检查$ result是否为假。哦,和禹应该转换的实体,或字符串中的双引号会制动你的HTML(假设你相信你的来源,否则XSS攻击也可能是一个问题) –

+0

哦,斯里。感谢这一点。要编辑它。 –

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

$fields = mysql_fetch_assoc($result); 

然后,你可以参考查询的结果与$fields['pagename']等等。

Documentation here。一般来说,您可能需要查看mysql模块的文档。

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

页#2 URL可以是:

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>";?> 

上面的代码是非常基本的,但将成为您的要求目前在可编辑输入框中显示行内容。

我创造了这个功能,将努力从一列检索所有数据:

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=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]."/>'; 
    } 

<?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 
    } 
?>