您好,请原谅我,我刚刚设法将其拼凑在一起,我认为更高级的程序员可以给我一两个关于编程技术的提示来改进它。我像疯子一样命名大量变量并重复代码。
该脚本是一个 html 仪表板,可控制数据库值插入到约 160 个不同的网站标题/描述中。
仪表板代码是:
$displayquery1 = "SELECT * from seo where seo_id = 1";
$displayresult1 = mysql_query($displayquery1, $con);
//fetch and print record for page 1
while ($row = mysql_fetch_assoc($displayresult1, MYSQL_NUM)) {
echo '<td align="left"><a href="' . $row[2] . '">' . $row[2] . '</a></td>'
. '<td><input type="text" name="seo1a" value=" ' . $row[3] . '"></td>'
. '<td><input type="text" name="seo1b" value=" ' . $row[4] . '"></td> '
. '<td><input type="textarea" name="seo1c" value=" ' . $row[5] . '"></td>
</tr><br>';}
//fetch and print record for page 2
$displayquery2 = "SELECT * from seo where seo_id = 2";
$displayresult2 = mysql_query($displayquery2, $con);
while ($row2 = mysql_fetch_assoc($displayresult2, MYSQL_NUM)) {
echo '<td align="left"><a href="' . $row2[2] . '">' . $row[2] . '</a></td>'
. '<td><input type="text" name="seo1a" value=" ' . $row2[3] . '"></td>'
. '<td><input type="text" name="seo1b" value=" ' . $row2[4] . '"></td> '
. '<td><input type="textarea" name="seo1c" value=" ' . $row2[5] . '"></td>
</tr><br>';}
插入脚本是:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST['seo1a'])) {
echo 'please enter a seo title';
} else {
$seo1a = ($_POST['seo1a']);
$seo1b = ($_POST['seo1b']);
$seo1c = ($_POST['seo1c']);
$seo2a = ($_POST['seo2a']);
$seo2b = ($_POST['seo2b']);
$seo2c = ($_POST['seo2c']);
//create queries
$q5 = "UPDATE seo SET seo_title='$seo1a', seo_description ='$seo1b', seo_content='$seo1c' WHERE seo_id = 1";
$q6 = "UPDATE seo SET seo_title='$seo2a', seo_description ='$seo2b', seo_content='$seo2c' WHERE seo_id = 2";
$r = mysql_query($q5, $con);
$r2 = mysqli_query($q6, $con);
}};
看看我是如何命名每个变量并如此重复地运行查询的?我必须写 160 页。我从数据库获取变量的方式也可能是错误的:
//get seo title for first page
$varquery1 = "SELECT * from seo where seo_id = 1";
$varresult1 = mysql_query($varquery1, $con);
if ($varresult1) {
$row1 = mysql_fetch_assoc(mysql_query($varresult1));
$seotitle = row1['seo_title'];
}
//get seo title for second page
$varquery2 = "SELECT * from seo where seo_id = 2";
$varresult2 = mysql_query($varquery2, $con);
if ($varresult2) {
$row2 = mysql_fetch_assoc(mysql_query($varresult2));
$seotitle = row2['seo_title'];
}
请随意批评我的代码质量,也请给我一两个提示。而且它不是我的网站,所以我还不能切换到 mysqli。非常感谢。
编辑:
我做了建议的更改,现在从循环中显示行,如下所示:
for ($i = 1; $i < 10; $i++) {
$loopquery = "SELECT * from seo where seo_id=$i";
$loopresult = mysql_query($loopquery, $con);
if($loopresult) {
$looprow = mysql_fetch_assoc($loopresult);
echo '<td align="left"><a href="' . $looprow['seo_url'] . '">' . $looprow['seo_url'] . '</a></td>'
. '<td><input type="text" name="seo1a" value=" ' . $looprow['seo_title'] . '"></td>'
. '<td><input type="text" name="seo1b" value=" ' . $looprow['seo_description'] . '"></td> '
. '<td><input type="textarea" name="seo1c" value=" ' . $looprow['seo_content'] . '"></td>
</tr><br>
';
我现在的问题是如何为每行的 POST 值获取不同的变量?非常感谢
最佳答案
正如您所说,您的代码中有太多重复。您为什么不考虑使用一个为每个数据库拉取采用不同参数的函数。另一方面,您可以创建一个 for(或 foreach)循环,其中您的
$varquery1 = "SELECT * from seo where seo_id = 1";
$varresult1 = mysql_query($varquery1, $con);
if ($varresult1) {
$row1 = mysql_fetch_assoc(mysql_query($varresult1));
$seotitle = row1[seo_title'];
将迭代。您可以将 seo_id = 1 应用于变量。创建一个计数器变量,例如 $counter = 0(如果使用 foreach)并在每次迭代结束时更新其值
//for loop
for($i=0; $i < 10; $i++ ) {
//Here will go each of your db queries
$varquery1 = "SELECT * from seo where seo_id = ".$i;
//and so on...
}
另一件事是尝试为变量命名更具描述性。 q, $r 对你来说意味着什么。 ?!? 您应该考虑使用 mysqli 而不是 mysql。我认为在 php7 中它已被弃用(如果我没记错的话)
看看这篇文章
还有很多很多很多的事情你应该考虑改变,但首先看看这篇基础文章并自己尝试。好的做法需要很长时间才能应用。
关于php - 更智能的方式来编写我的新手重复的 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33451610/