-2

私は基本的な編集機能を機能させようとしていますが、次のことを考え出しました。

私が持っている最初のページの1つ:

while($row = mysqli_fetch_array($result))
  {
  echo "<tr>";
  echo "<td><a href=\"product.php?id=". $row['product_id'] ."\">" . $row['product_name'] . "</a></td>";
  echo "<td>" . $row['product_price'] . "</td>";
  echo"<td><a href =\"deleteproduct.php?id=". $row['product_id'] ."\">Delete</a>";
  echo"<td><a href =\"editproduct.php?id=". $row['product_id'] ."\">Edit</a>";
  echo "</tr>";
  }
echo "</table>";

これは、次のページで Edit の ID を取得しようとした場合を除いて、すべて正しく機能します。

次のページ:

<?php



if(isset($_POST['edit']))

  {
    $con=mysqli_connect("localhost","root","","db_test");

    // Check connection

    if (mysqli_connect_errno())
    {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    if (isset ($_GET['id'])) { $product_id = strip_tags($_GET['id']); }

    $productname   =strip_tags($_POST['nameAdd']); 
    $productdesc      =strip_tags($_POST['descAdd']);
    $productimg   =strip_tags($_POST['imageAdd']); 
    $price        =strip_tags($_POST['priceAdd']);


    $sql = "UPDATE tbl_products SET product_name ='$productname', product_description ='$productdesc',
         product_img ='$productimg',product_price ='$price' WHERE product_id = '$product_id'";
    if (!$insert = $con->prepare($sql))
        die('Query failed: (' . $con->errno . ') ' . $con->error);

    if (!$insert->bind_param('ssss', $productname, $productdesc, $productimg, $price ))
        die('Binding parameters failed: (' . $insert->errno . ') ' . $insert->error);

    if (!$insert->execute())
        die('Execute failed: (' . $insert->errno . ') ' . $insert->error);
    else
        echo "Edit Successful!";

    mysqli_close($con);

echo("      </div>
      <div id='right'><br><br><img src='Red Carpet Theatre Company/images/MayDayGroup.jpg' width='350' height='250' alt='Group Photo'/>
        <p>&nbsp;</p>
      </div>
      <div id='footer'>");
}
else
{
  echo("
<FORM action='".$_SERVER['PHP_SELF']."' METHOD=post>
<input type='hidden' name='edit' value='edit'>
 <table border='3'> 
     <tr>
     <td> Product Name :</td><td><input name=nameAdd type ='text' size'14'> </input></td>
     </tr>
     <tr>
     <td> Product Description :</td><td><input name='descAdd' type ='text' size'14'> </input></td>
     </tr>
     <tr>
     <td> Product Image URL :</td><td><input name='imageAdd' type ='text' size'14'> </input></td>
     </tr>
     <tr>
     <td> Product Price :</td><td><input name='priceAdd' type ='text' size'14'> </input></td> 
     </tr>
     <tr>
     <td><input type='submit' name='Submit' value='Submit'></td>
     </tr>
</table>
</FORM>
      </div>
      <div id='right'><br><br><img src='Red Carpet Theatre Company/images/MayDayGroup.jpg' width='350' height='250' alt='Group Photo'/>
        <p>&nbsp;</p>
      </div>
      <div id='footer'>
");
}
?>

何らかの理由で、product_id 変数に対して未定義のエラーが発生し続けます。理由はありますか?「isset ($_GET['id'])」を使用して前のページから取得する必要があります。ありがとうございます。

4

3 に答える 3

0

フォーム メソッドが POST であるため、$_GET['id'] は定義されていません。プロダクト ID はどのように取得していますか? URL構造にありますか?

于 2013-08-21T21:47:24.590 に答える
0

href 構文がオフに見えます。リンクはfirebugでどのように見えますか.

于 2013-08-22T00:25:39.347 に答える
0

PDOではなくMYSQLI_を使用してこれを使用しているため

次のようなクエリを使用しないでください。

if (!$insert = $con->prepare($sql))
    die('Query failed: (' . $con->errno . ') ' . $con->error);

if (!$insert->bind_param('ssss', $productname, $productdesc, $productimg, $price ))
    die('Binding parameters failed: (' . $insert->errno . ') ' . $insert->error);

if (!$insert->execute())
    die('Execute failed: (' . $insert->errno . ') ' . $insert->error);
else
    echo "Edit Successful!";

代わりに、これは次のように使用します。

if (!$insert = mysqli_prepare($con,$sql))
    die('Query failed: (' . mysqli_errno($con) . ') ' . mysqli_error();

if (!mysqli_stmt_bind_param($insert,'ssss', $productname, $productdesc, $productimg, $price ))
    die('Binding parameters failed: (' . mysqli_errno($insert). ') ' . mysqli_error($insert);

if (!mysqli_stmt_execute($insert))
    die('Execute failed: (' . mysqli_errno($insert) . ') ' . mysqli_error($insert);
else
    echo "Edit Successful!";

これで、コードは正常に動作します (それを実行するのは mysqli_* の方法だけです)。

于 2013-08-21T22:05:50.110 に答える