Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过ID=ID更新单个记录_Php_Html_Mysql - Fatal编程技术网

Php 通过ID=ID更新单个记录

Php 通过ID=ID更新单个记录,php,html,mysql,Php,Html,Mysql,我现在遇到了一堵墙,这段代码显示了一个表,每个记录的末尾都有一个按钮。按下此按钮后,将执行一项功能,以-5更新健康记录 这对工作非常有用,但它会影响所有行,我试图通过ID使它只触及一条记录,但没有运气!如果你能帮忙,那就太好了 php $sql="SELECT `id` , `FirstName` , `Health` FROM ajax_demo WHERE `id` = `id` LIMIT 0 , 30"; $result = mysql_query($sql); if(isset($

我现在遇到了一堵墙,这段代码显示了一个表,每个记录的末尾都有一个按钮。按下此按钮后,将执行一项功能,以-5更新健康记录

这对工作非常有用,但它会影响所有行,我试图通过ID使它只触及一条记录,但没有运气!如果你能帮忙,那就太好了

php

$sql="SELECT `id` , `FirstName` , `Health` FROM ajax_demo WHERE `id` = `id` LIMIT 0 , 30";
$result = mysql_query($sql);


if(isset($_REQUEST['submit']))
{
counterminus();
}
  function  counterminus()
{
$cmeter = $cmeter - 1;

$id = $_POST["id"];
$FirstName = $_POST["FirstName"];

mysql_query("UPDATE ajax_demo SET `Health` = `Health` - `Damage` WHERE id = {$id}");
Header("location:oo_test.php");
}
这是php/表单

<?php 
echo 
"<table border='1'>
<tr>
<th>id</th>
<th>Firstname</th>
<th>health</th>
</tr>";

while($row = mysql_fetch_row($result)) {
    echo '<tr>';
    foreach($row as $cell) {
        echo "\n<td>$cell</td>";
}
echo '<td><form id="theForm" action="" method="POST" >
<input type="submit" name="submit"  id="submit" value="Attack" />
<input type="hidden" name="'.$row[1].'" /></form></td></tr>';
 echo "\n\n";
 }?>  

为什么要写{id}而不是$id

另外,你的代码是完全不安全的,很容易被修改和黑客攻击

您应该尝试PDO,而不是mysql_查询,后者也会贬值。

这是通过$\u POST['id']变量攻击的漏洞。使用mysql_real_escape_string,或者更好的,通过PDO或MySQLi准备好的查询,不管怎样,这与您遇到的问题是正交的,注意这一点是个好主意

实际上,您从来没有提交过名为id的HTML表单字段。此外,在HTML中,$row在while循环之外将为NULL,因此首先将是未定义的。这将意味着您的隐藏字段的名称将为空,并且您的SQL将显示UPDATE WHERE id=,这是无效的,并将导致错误


要修复此问题,您需要提交一个名为id的表单字段,以便$\u POST['id']实际包含一个值。

{$id}在字符串插值中是有效的PHP,对于使用下划线的情况非常有用。foo_u$bar_z对foo_{$bar}有不同的含义。哦,好吧,我不知道。等我有更多的时间,我会深入研究的。感谢您提供的信息:-请查看复杂/卷曲语法。另外,我的例子可能是另一种方式,在大括号中有_baz,我不记得PHP中的字符串插值在哪里停止了…对,看起来我需要重写代码,谢谢你的反馈。在我开始挖掘之前,你知道什么好的PDO教程吗?这是表单不是表单而是PHP代码。真实的表单是在浏览器中呈现的。你能给我一个使用mysql\u real\u escape\u字符串的例子吗?我将尝试在文本字段或类似字段中添加内容,以提供一个可使用的值。