Mysql数据库没有通过我做的cms更新?

时间:2011-10-10 10:25:17

标签: php mysql database

是的,我希望这是这个特定项目的最后一个问题 - 它是一个私人日记项目,索引页面中的代码与菜单栏一起回显所有日子,一个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注入但是不需要它用于这个项目,因为它是离线的,个人的,没有人会看到它!

1 个答案:

答案 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());
 }