mysql update两表联查更新某些字段_PHP MySQL选择和更新及各种操作办法

本文介绍了如何使用PHP和MySQL更新与电影评论相关的数据库记录。首先,通过下拉菜单选择要更新的评论,然后填充表单以编辑信息。在解答中,提到了如何改进查询和表单处理,以防止SQL注入并确保数据安全。
摘要由CSDN通过智能技术生成

0af8eaa868eaefb72484abaa57d3688e.png

e125d78eddff57141863f88ccdc529f0.gif

我希望能够更新数据库,以便更改网站上包含电影评论的某些动态内容。

第一步,我需要能够从数据库动态填充的下拉菜单中选择要更新的电影评论。

第二步是填充与从下拉框中选择的电影相关的一组表单,以便可以编辑信息。

第三步是运行更新查询以更改数据库。

这是我编写的代码,用于使用存储在有效数据库中的电影标题填充下拉菜单。

<form action="" method="POST">
<select name="title">
<option value="">Select Movie Title</option>             
<?php 
$sql="SELECT * FROM review ORDER BY title ASC";
    $result=mysql_query($sql);
while ($row=mysql_fetch_assoc($result)) {

echo "<option value=" . $row['title'] . ">" . $row['title'] . "</option>";
}
echo"</select>";
?> 
<input type="submit" name="select" value="Select">

我在弄清楚如何填充将显示与下拉选择相关的信息的表格时遇到了麻烦。

<?php 
 if(isset($_POST['select'])){
     $query = mysql_query("SELECT * FROM REVIEW WHERE title = '$title'");
     while ($fetch=mysql_fetch_assoc($query)){
 ?>  
<p>Title:<input type="text" size="35" name="title" value="<?php echo $_POST['title']; ?>"></p>
    <p>Source:<input type="text" size="35" name="source" value="<?php echo $_POST['source']; ?>"></p>
    <p>Rating:<input type="text" size="5" name="rating" value="<?php echo $_POST['rating']; ?>"></p>
    Review:<br>
    <textarea name="review" cols="40" rows="7">
    <?php echo $_POST['review']; ?>

解答1:

在while循环中从表中获取哪些数据?不要从'$ fetch'使用。
并且只需要具有评论字段(每个电影标题只有一次)。因此,虽然不需要循环。
没有说明来源和评级。但是我认为这会帮助你:

<?php 
 if(isset($_POST['select'])){
    $title = $_POST['title'];
    $query = mysql_query("SELECT * FROM REVIEW WHERE title = '$title'");
    $review = @mysql_result($query,0);
 ?>  
<p>Title:<input type="text" size="35" name="title" value="<?php echo $title; ?>"></p>
    <p>Source:<input type="text" size="35" name="source" value="<?php echo $_POST['source']; ?>"></p>
    <p>Rating:<input type="text" size="5" name="rating" value="<?php echo $_POST['rating']; ?>"></p>
    Review:<br>
    <textarea name="review" cols="40" rows="7">
    <?php echo $review; ?>

解答2

还可以尝试在<option>中添加名称属性?像这样..

echo '<option name= "title" value=" '. $row['title'] .' ">" '. $row['title'] .' "</option>';

您的查询可以修改为这样的内容。

$query = mysql_query("SELECT * FROM REVIEW WHERE title = '". $_POST['title'] ."'");

!警告!在数据库中添加表单输入的数据时要小心,请确保对这些数据进行清理。否则,您的站点将很容易受到攻击。

不要将fetch用作您的变量名。此变量名以后可能会出现命名方面的问题。我们应该避免许多PHP保留字。使用$ row代替。我知道$ fetch并不是实际的保留字,但是FETCH确实..最好远离它们,而不是近距离接触它们。.我希望您理解我想说的...

喜欢 ..

while ($row=mysql_fetch_assoc($query)){

不要用这个

<p>Title:<input type="text" size="35" name="title" value="<?php echo $_POST['title']; ?>"></p>

并改用它。

<p>Title:<input type="text" size="35" name="title" value="<?php echo $row['title']; ?>"></p>

对其余的代码进行更改。如果要基于表单输入的值更新数据库,则必须在查询上方添加另一个表单。

像这样的东西

if(isset($_POST['select'])){
 echo '<form name="updateFor" action="post" method="update.php">';

 ## put the rest of your codes here..



 } // this must be the end of your while loop

 ## add the submit form input

 echo '<input type="submit" name="update" value="update">';
 echo '</form>';

现在在update.php上,您可以执行以下操作...

if(isset($_POST['update'])){

## prepare your update query..
## !IMPORTANT! make sure to santize everything before adding it to your database.

$update_query = ("UPDATE REVIEW SET title = '". $_POST['title'] ."', source = '". $_POST['source'] ."', rating='". $_POST['rating'] ."', review = '". $_POST['review'] ."'  WHERE title = ". $_POST['title']) ;

再次确保在将表单中的所有数据发布到数据库之前,请对其进行清理...

欢迎留言评论

译文:https://www.daniweb.com/programming/web-development/threads/431323/php-mysql-select-update

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值