繁体   English   中英

PHP更新表插入空白字段

[英]PHP Update table Inserts blank fields

更新:我缩小了范围,当我在header.php文件中删除此标记时,它全部起作用,有人可以解释一下。

<script src="#" type="text/javascript"></script>

嗨,我的php代码有一个很烦人的问题。 我尝试从表单中更新php数据库时,但是提交后数据库中的字段变为空。 请帮忙! 您可以在此处查看它的运行情况, 网址为http://andcreate.com/shoelace/admin/edit1.php。单击右侧的列表进行编辑,然后查看会发生什么。

<?php
include("header.php");

echo "<h2>Edit Posts</h2>";

echo "<div id='editNav'>";
echo "<p>Choose Post to Edit</p>";




//////////GET ALL RECORDS AND BUILD A NAV SYSTEM FROM THEM////////
$results = mysql_query("SELECT * FROM shoeData ");



while($row = mysql_fetch_array($results)){




 $id = $row['id'];
 $name = $row['name'];
 $about = $row['about'];

 echo "$date <a href=\"" . $_SERVER['PHP_SELF'] . "?id=$id" . "\">" . substr($name, 0, 40) . " </a> <br/> ";


 }

$thisID = $_GET['id'];

if(!isset($thisID)){
 $thisID = 22;

}




//////////FINISH ALL RECORDS AND BUILD A NAV SYSTEM FROM THEM////////

echo "</div>";



///////IF USER SUBMITS CHANGES UPDATE THE DATABASE//////////
//has user pressed the button
$update = $_GET['update'];

if($update == "yes") {

 $name = $_POST['name'];

 $about =  $_POST['about'];

 $company =  $_POST['company'];

 $buy =  $_POST['buy'];



 //update data for this record
 $sql = "UPDATE shoeData SET 
 name = \"$name\",
 about = \"$about\",
 company = \"$company\",
 buy = \"$buy\"
 WHERE id= $thisID";
 $thisUpdate = mysql_query($sql) or die(mysql_error());


}




///////END IF USER SUBMITS CHANGES UPDATE THE DATABASE//////////




/////////// HERE WE GET THE INFO FOR ONE RECORD ONLY//////// 
$results = mysql_query("SELECT * FROM shoeData WHERE id=$thisID");



while($row = mysql_fetch_array($results)){


 $name = $row['name'];

 $about = $row['about'];

 $company = $row['company'];

 $buy = $row['buy'];

}
//////////////FINISH GETTING INFO FOR ONE RECORD ONLY/////////////



?>

<form name="formS" method="post" action="<?php echo $_SERVER['PHP_SELF']."?id=$thisID&update=yes";?>">

Name
<p>
<input type="text" name="name" id="name" value="<?php echo $name;?>" />
</p>
About
<p>
<input type="text" name="about" id="about" value="<?php echo $about;?>" />
</p>
Company
<p>
<input type="text" name="company" id="company" value="<?php echo $company;?>" />
</p>
Name
<p>
<input type="text" name="buy" id="buy" value="<?php echo $buy;?>" />
</p>



<p>
<input type="submit" name="submit" id="submit"  />
</p>




</form>
<p><a class="delete" href="delete.php?id=<?php echo $thisID;?>">Delete this post</a></p>

<?php
include("footer.php");
?>

您有$update = $_GET['update']; ,但是紧接着,您正在使用$_POST 给定的请求是GET或POST,而不是两个-因此只要$_GET['update']设置为“是”,有不会任何POST变量设置,因此,更新将与所有的做设置为空白的值。

实际上,您实际上有可能在两个地方都使用$_GET$_POST -由于更新正在进行,但为空,听起来您想使用$_GET (尽管对于表单提交/更新,您可能确实应该而是使用POST)。

这似乎很愚蠢,但是您混淆$_GET$_POST变量吗? 您可以使用一个来检查是否进入循环,而使用另一个来填充字符串。

另外,作为一个未成年人,您可以通过在片段末尾添加LIMIT 1来优化片段末尾的SELECT语句,因为您大概只会为每个id调用一个条目,不是吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM