-1

我正在尝试在 php 和 mysql 中创建一个简单的产品页面(没有登录或类似的东西)。到目前为止,一切都很好地显示在我的产品页面上,我可以从我的管理页面中很好地删除/添加。从那里我试图弄清楚如何创建一个编辑功能。因此,为了方便起见,我制作了一个基于 productid 从 mysql 表中填充的表单(edit2.php?id=X),然后发布到 edit.php 并希望更新数据库。到目前为止,重用旧代码不起作用,不知何故我希望它会那么简单。

这是我的添加产品(有效):

<?php
session_start();
if(isset($_POST) && isset($_POST['hp']) && empty($_POST['hp'])) {
    if(
isset($_SESSION['token']) &&
$_SESSION['token'] == $_POST['token']
) {
        mysql_connect('localhost', 'test_admin', 'test');
        mysql_select_db('test_product');
        $data = array_map('mysql_real_escape_string', $_POST);
        $query = "
            INSERT INTO products (
                product_name, price, description, image
            ) VALUES (
                '{$data['product_name']}',
                '{$data['price']}',
                '{$data['description']}',
                '{$data['image']}'
            )
        ";
        if(mysql_query($query)) {
            echo '<p>Your information was successfully saved.</p>';
            unset($_SESSION['token']);
        } else {
            echo '<p>There was an error storing your data, please try again later.</p>';
        }
    } else {
        echo '<p>Your data has already been saved.</p>';
    }
} else {
    echo '<p>Error.<br />Please try again later.</p>';
}
?>

这是我的更新(它只是抛出一个语法错误或“错误存储您的数据”:

<?php

        mysql_connect('localhost', 'test_admin', 'test');
        mysql_select_db('lbriedis_product');


        $data = array_map('mysql_real_escape_string', $_POST);
        $query = "UPDATE products WHERE id = ".$pageid." (
                product_name, price, description, image
            ) VALUES (
                '{$data['product_name']}',
                '{$data['price']}',
                '{$data['description']}',
                '{$data['image']}'
            )
        ";
        if(mysql_query($query)) {
            echo '<p>Your information was successfully saved.</p>';
            unset($_SESSION['token']);
        } else {
            echo '<p>There was an error storing your data, please try again    later.</p>';
            echo mysql_error(); //Used for development and testing only
        }
?>

当我尝试使用会话验证时出现会话错误,可能是因为我在我的管理页面上启动了一个会话(添加产品表单在 admin.php 上,编辑和删除是链接)?尽管如此,我暂时删除了会话检查,因为我在更新部分更加挣扎。

此外,我不确定将 $pageid 传递给更新查询的最佳方式,以获取 'update where id = $pageid. 我有一个带有值的隐藏字段(请参阅编辑表单),如何正确引用它?

编辑表单(值显示正确,因此 id = $pageid 在这里工作:

<?php
        $dol = "$";
        $pageid = (int)$_GET['id']; 
        mysql_connect('localhost', 'lbriedis_admin', 'xxxxxx123');
        mysql_select_db('lbriedis_product');
    $result = mysql_query("SELECT * FROM products WHERE id = ".$pageid."");
    if($result){
  $data = mysql_fetch_assoc($result);
}


    ?>

<form id="inputForm" method="post" action="edit.php">


    <fieldset>

   <label>Pool name:</label>
 <?php
   echo '<input type="text" name="product_name" value="'.$data['pool_name'].'" />';
     ?> 

    <label>Price:</label> <br>
     <?php
   echo '$&nbsp;<input type="text" name="price" value="'.$data['price'].'" />';
    ?>  <br />
    <label>Description:</label>
      <?php
   echo '<textarea name="description">'.$data['description'].'</textarea>';
    ?>

 <label>Image:</label></label>
  <?php
   echo '<input type="text" name="image" value="'.$data['image'].'" />';
    ?>  
    <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>" />
     <input type="text" id="hp" name="hp" />
     <?php
   echo '$&nbsp;<input type="hidden" name="$pageid" value="'.$pageid.'" />';
    ?>  

    <br>
    <input type="submit" name="submit" value="Update" />

    </fieldset>
</form>
4

3 回答 3

1

您的更新查询有不正确的sintax

    $query = "UPDATE products WHERE id = ".$pageid." (
            product_name, price, description, image
        ) VALUES (
            '{$data['product_name']}',
            '{$data['price']}',
            '{$data['description']}',
            '{$data['image']}'
        )

正确的语法应该是

    $query="UPDATE products SET
            product_name = '".$data['product_name']."', 
            price ='".$data['price']."',
            description = '".$data['description']."',
            image = '".$data['image']."'
            WHERE id = '".$pageid."'
于 2013-04-18T05:32:39.507 回答
0

用以下内容替换您的更新查询:-

$query = "UPDATE products 
  set product_name=$data['product_name'],
      price = $data['price'],
      description = $data['description'] ,
      image = $data['image']
      where id =". $pageid ;
于 2013-04-18T05:36:49.953 回答
0

改变这个

name="$pageid"

name="pageid"

并像这样访问它

$data = array_map('mysql_real_escape_string', $_POST);
$query = "UPDATE products WHERE id = {$data['pageid']} (

问题是$pageidedit.php. 并且您已分配$pageidname属性,每个产品都会有所不同。

将查询更改为此

$query="UPDATE products SET
        product_name = '{$data['product_name']}', 
        price ='{$data['price']}',
        description = '{$data['description']}',
        image = '{$data['image']}'
        WHERE id = '{$data['pageid']}'
于 2013-04-18T05:30:35.413 回答