是的,我希望这是这个特定项目的最后一个问题 - 它是一个私人日记项目,索引页面中的代码与菜单栏一起回显所有日子,一个div用于帖子,div包含一个图像滑块。
我有两个数据库,一个是页面,另一个是图像,它们都有名为" pageorder"这有助于我指定哪些图像转到哪个页面。
现在这些图片都有标题和说明,一切正常!
接下来的部分是界面,我已经创建了一个页面来CRUD页面和CRUD图像,一个页面完全正常工作和CRUD数据库条目。然而,即使回显消息显示"数据库更新"图像也不会更新。没有给我错误,所以我觉得我的代码有问题。
<?php
include_once "scripts/connect_to_mysql.php";
$pid = preg_replace("/[^0-9]/", "/[^a-z]/", $_POST['pid']); // filter everything but numbers for security
$sqlCommand = "SELECT * FROM images WHERE pageorder='$pid' ORDER BY id ASC";
$query = mysql_query($sqlCommand) or die (mysql_error());
$imageedit = '';
while ($row = mysql_fetch_array($query)) {
$id = $row["id"];
$images = $row["images"];
$title = $row["title"];
$desc = $row["description"];
$pageorder = $row["pageorder"];
$imageedit .= "<table width='300'>
<tr>$id</tr>
<tr><img src='$images' width='204' height='153' /></tr>
<tr><textarea name='title' id='title' cols='30' rows='1'>$title</textarea></tr>
<tr><textarea name='description' id='description' cols='60' rows='1'>$desc</textarea></tr>
<tr>$pageorder</tr> </table>";
}
mysql_free_result($query);
?>
和表单详细信息
<form id="form" name="form" method="post" action="administrator/page_images_parse.php" onsubmit="return validate_form ( );">
<?php print $imageedit ?>
<input type="submit" name="button" id="button" value="Submit Page Edit" />
<input name="pid" type="hidden" value="<?php echo $pid; ?>" />
</form>
当我转到我的edit_index.php页面时会询问我要编辑的页面,我会告诉它编号,例如1,它将获取与第1页相关的所有图像。当我更新任何标题或描述数据时,第1页有18个图像,它们不会进入数据库。
所以我认为&#34; page_images_parse.php&#34;
存在问题守则:
<?php
include_once "../scripts/connect_to_mysql.php";
$pid = $_POST['pid'];
$title = $_POST['title'];
$desc = $_POST['description'];
$query = mysql_query("UPDATE images SET title='$title', description='$desc' WHERE pageorder='$pid'") or die (mysql_error());
echo 'Operation Completed Successfully! <br /><br /><a href="index.php">Click Here</a>';
exit();
?>
我认为WHERE pageorder =&#39; $ pid&#39;功能,但我尝试了各种各样的东西,但似乎没有任何工作。
P.S。我知道php注入但是不需要它用于这个项目,因为它是离线的,个人的,没有人会看到它!
答案 0 :(得分:0)
而不是:
$pid = preg_replace("/[^0-9]/", "/[^a-z]/", $_POST['pid']);
你可以使用
$pid = (int) $_POST['pid'];
还根据mysql注入过滤数据
$query = mysql_query("SELECT * FROM images WHERE pageorder='".mysql_real_escape_string($pid)."' ORDER BY id ASC") or die (mysql_error());
修改强>
将while循环更新为:
$i=0;
while ($row = mysql_fetch_array($query)) {
$id = $row["id"];
$images = $row["images"];
$title = $row["title"];
$desc = $row["description"];
$pageorder = $row["pageorder"];
$imageedit .= "<table width='300'>
<tr>$id</tr>
<tr><img src='$images' width='204' height='153' /></tr>
<tr><textarea name='title[".$i."]' id='title[".$i."]' cols='30' rows='1'>$title</textarea></tr>
<tr><textarea name='description[".$i."]' id='description[".$i."]' cols='60' rows='1'>$desc</textarea></tr>
<tr>$pageorder</tr>
<input type='hidden' name='id[".$i."]' value='".$id."' />
</table>";
$i++;
}
和page_images_parse.php为
foreach ($_POST['id'] as $key => $id)
{
$pid = $id;
$title = $_POST['title'][$key];
$desc = $_POST['description'][$key];
$query = mysql_query("UPDATE images SET title='$title', description='$desc' WHERE id='$pid'") or die (mysql_error());
}