我正在处理一个常见问题,但是对于管理,我希望能够看到存储在数据库中的当前常见问题,并在下面找到一个表单以发布新问题&回答,提交后将用新的问题和答案刷新页面。
这就是事情:
我已经把它发布得很好,但我只能显示最新的...
到目前为止,这是我的代码:
获得:
<?php
//select database table
$sql = "SELECT question, answer FROM faq";
$queryresult = mysql_query($sql) or die (mysql_error());
//Request Values
while ($row = mysql_fetch_array($queryresult)){
$faqQuestion = $row['question'];
$faqAnswer = $row['answer'];
}
//echo variables
echo "<p>$faqQuestion</p>" . "<p>$faqAnswer</p>" . "<br />";
//if question and answer have null values
if ((empty($faqQuestion))&&(empty($faqAnswer))){
echo("<div><p>No Questions available</p></div>");
}
?>
<?php
mysql_free_result($queryresult);
mysql_close($conn);
?>
张贴:
<?php
include("database_conn_dcs.php");
if($_POST){
$question = ($_POST['question'])? $_POST['question']:null;
$answer = ($_POST['answer'])? $_POST['answer']:null;
$sql="INSERT INTO faq (talen_idtalen, question, answer)
VALUES ('$idtalen', '$question', '$answer')";
if (!mysql_query($sql)) {
die('Error: ' . mysql_error());
}
header("location: faq_admin.php");
}
?>
我的另一个问题是它也发布空白的东西。我如何阻止PHP向数据库发送空值(已经说明变量是非空的?
提前非常感谢!!!
答案 0 :(得分:1)
首先,你的echo应该在while循环中,否则每次循环时,你的两个变量都会被覆盖。
其次,如果没有返回任何结果,您只想显示没有可用的问题,这将由mysql_num_rows检查。
第三,您的输入代码容易受到SQL注入攻击,这可能会使您的网站受到攻击。要防止这种情况,请使用prepared statements,并绑定用户输入($ _POST变量),而不是直接将它们包含在查询中。
<?php
//select database table
$sql = "SELECT question, answer FROM faq";
$queryresult = mysql_query($sql) or die (mysql_error());
//Request Values
while ($row = mysql_fetch_array($queryresult)){
$faqQuestion = $row['question'];
$faqAnswer = $row['answer'];
//echo variables
echo "<p>$faqQuestion</p>" . "<p>$faqAnswer</p>" . "<br />";
}
if(mysql_num_rows($queryresult) <= 0) {
echo("<div><p>No Questions available</p></div>");
}
mysql_free_result($queryresult);
mysql_close($conn);
?>