PHP更新表插入空白字段

PHP更新表插入空白字段,php,mysql,Php,Mysql,更新:我缩小了范围,当我去掉header.php文件中的这个标记时,一切都正常了,有人能解释一下吗 <script src="#" type="text/javascript"></script> 嗨,我的php代码有一个很烦人的问题。我试图从一个表单更新一个php数据库,当我这样做时,数据库中的字段在提交后变为空。请帮忙!你可以在这里查看,点击右边的列表进行编辑,看看会发生什么 <?php include("header.php"); echo "<

更新:我缩小了范围,当我去掉header.php文件中的这个标记时,一切都正常了,有人能解释一下吗

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

嗨,我的php代码有一个很烦人的问题。我试图从一个表单更新一个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=$\u GET['update'],但紧接着,您就使用了
$\u POST
。给定的请求要么是GET,要么是POST,而不是两者都是-因此每当
$\u GET['update']
设置为“yes”时,将不会设置任何POST变量,因此更新将在其设置为空的所有值下完成


很可能你真的打算在这两个地方使用
$\u GET
$\u POST
——因为你的更新正在进行,但都是空白的,听起来你想使用
$\u GET
(虽然对于表单提交/更新,你可能真的应该使用POST来代替)。

这可能看起来很愚蠢,但是您是否混淆了
$\u GET
$\u POST
变量?一个用于检查是否进入循环,另一个用于填充字符串


另外,作为次要的补充,您在代码段末尾的
SELECT
语句可以通过在其末尾添加
LIMIT 1
来优化,因为每个
id
您大概只需要调用一个条目,否?

$\u POST
变量直接包含到SQL查询中,而不首先对其进行清理/验证,这是一个巨大的安全漏洞。不要这样做。好的,我会采纳任何建议来解决这个问题,以及我遇到的问题。您是否检查了数据库以确保shoeData中有一行id列实际上等于
$thisID
?傻,我知道,但它碰巧发生了,等等,你的意思是有一行叫做“id”,是的,isI建议你先打印更新字符串,看看你到底在向数据库发送什么,然后你应该使用参数,或者至少清理输入数据库的数据。在这种情况下,SQL注入非常容易。在链接或按钮的操作中硬编码的设置中,两者都有可能,不是吗?例如。即使表单使用POST方法,仍然会有一个GET变量。然而,该代码在以前的项目中工作得很好,现在不确定它为什么提交空白文档。当我使用post进入循环以查看它是否已提交时,它从不进入循环,只为我获取工作,我不知道为什么,但随后插入了空白字段。表单的方法设置为什么?设置为post的方法,因此我不确定GET甚至可以进入循环。是否可以编辑表单代码的基本部分(例如,表单标签和关于提交表单的内容的操作语句)发送到post?这可能会澄清很多问题。例如,按下按钮后,bitI可以在update if语句中回显$name,并在回显中显示更改,但只要我刷新与该想法相关的字段,这些字段就会为空。