在同一php页面上发布和显示信息
我正在处理一个常见问题,但对于管理,我希望能够看到存储在数据库中的当前常见问题,并在该表格下方发布一个新的问题和答案,提交后将用新的问题和答案刷新页面 事情是这样的: 我已经把它贴好了,但我只能显示最近的一个 以下是我目前的代码: 获取:在同一php页面上发布和显示信息,php,html,css,Php,Html,Css,我正在处理一个常见问题,但对于管理,我希望能够看到存储在数据库中的当前常见问题,并在该表格下方发布一个新的问题和答案,提交后将用新的问题和答案刷新页面 事情是这样的: 我已经把它贴好了,但我只能显示最近的一个 以下是我目前的代码: 获取: <?php //select database table $sql = "SELECT question, answer FROM faq"; $queryresult = mysql_quer
<?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");
}
?>
首先,您的echo应该在while循环中,否则每次它循环时,您的两个变量都会被覆盖
其次,如果没有返回结果,您只想显示没有可用问题,这是由mysql_num_行检查的
第三,您的输入代码容易受到SQL注入的攻击,这可能会危害您的网站。要防止这种情况,请使用并绑定用户输入($\u 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);
?>
“如何防止PHP向数据库发送空值”-在告诉它要执行的操作时,按照if((empty($faqQuestion))&&(empty($faqQuestion)))中的操作执行。通过或停止。不要通过GO,罚款200美元-在满足要求之前将其设置为die()
或exit()
。不要在php中使用mysql*扩展。对于较新的php版本,它们已经被弃用。仅用于旁注和防止在数据库中存储空格,请使用trim();与@Mubo所说的功能不同,您的代码看起来需要SQL注入。您还应该使用参数化查询而不是动态查询。研究PDO或MySQLi,并阅读如何避免SQL注入