以下脚本可以正常工作,但我不喜欢它,因为它不优雅而且很乱。
无需太高级(意味着我不想要 OOP 风格),我只想以程序方式最小化此代码。主要是我想结合 SQL 查询并清理混乱。
//get page url and query db to find the correct page
$this_page = $_GET['page'];
$this_page = escape_data($_GET['page']);
//Make sure page exists - if it doesn't redirect the browser
$SQL_page_exist = "SELECT * FROM pages_learn_more WHERE page_title = '$this_page'";
$SPE_result = mysql_query($SQL_page_exist);
while ($details = mysql_fetch_array($SPE_result))
{
$page_id = $details['id'];
$page_title = $details['page_title'];
$main_title = $details['main_title'];
$main_content = $details['main_content'];
$sub_title = $details['sub_title'];
$sub_content = $details['sub_content'];
}
if(mysql_num_rows($SPE_result) == 0)
{
echo '<META HTTP-EQUIV="Refresh" Content="0; URL=page_not_found.php">';
} else {
$SQL =
"SELECT ptt.tool_tip_link
FROM pages_tool_tip ptt
JOIN pages_to_pages ptp
ON ptp.tool_tip_id = ptt.tool_tip_id
WHERE ptp.learn_more_id = '$page_id'";
$result = mysql_query($SQL); // or die(mysql_error());
//set array for reference_keys variable which may contain 0 to 20 keys
$reference_keys = array();
while ($db_field = mysql_fetch_array($result))
{
$reference_keys[] = $db_field['tool_tip_link'];
}
好的,所以上面的代码可以正常工作,但它非常难看,过去 2 小时我一直在尝试将其改进为干净、简单和漂亮的东西,但可惜我的技能还没有,我得到的只是 mysql错误。
我最近的尝试是:
$SQL =
"
SELECT *
FROM pages_learn_more plm
JOIN pages_tool_tip ptt, pages_to_pages ptp
ON ptp.tool_tip_id = ptt.tool_tip_id
WHERE plm.page_title = '$this_page' AND ptp.learn_more_id = plm.id
";
$result = mysql_query($SQL); // or die(mysql_error());
$reference_keys = array();
while ($details = mysql_fetch_array($result))
{
$reference_keys[] = $details['tool_tip_link'];
$page_id = $details['id'];
$page_title = $details['page_title'];
$main_title = $details['main_title'];
$main_content = $details['main_content'];
$sub_title = $details['sub_title'];
$sub_content = $details['sub_content'];
}
**这就像我第 30 次尝试清理此代码失败。有知识的人可以帮助我,如果可能的话,请解释你的意见......
谢谢 **
附带说明:我什至在 PHPmyAdmin 中尝试了许多查询,这告诉我您的 SELECT of FROM 语句中的表顺序会影响您的结果,例如SELECT pages_learn_more plm, pages_tool_tip ptt
!= SELECT pages_tool_tip ptt, pages_learn_more plm
而且我不明白这些语句的顺序如何影响结果。(在完整查询中使用 1 会导致错误,而其他显示表)
如果有帮助,我的数据库方案的图片