如何使用`id`更新数据库?

时间:2014-04-11 07:32:00

标签: php mysql

我想使用id更新我的数据库,我已经有一个名为

的数据库

现在,当我使用WHERE college='1'更新数据库时,它可以正常运行,但是当我使用id更新我的数据库时,它无法正常工作请帮助,我正在工作的数据库id=1为..

这是我的源代码:

<?php
$con=mysqli_connect("localhost","root","Bhawanku","members");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$result = mysqli_query($con,"SELECT * FROM admin");

while($row = mysqli_fetch_array($result))
        {
            echo "(".$row['id'].") ".$row['first_name']." ".$row['last_name'];
        }

mysqli_query($con,"UPDATE admin SET first_name='Rajendra', last_name='Arora'
WHERE id='$id'");


mysqli_close($con);
?>

EDITED

$id放在显示错误未定义变量id之后..这意味着什么?

5 个答案:

答案 0 :(得分:1)

您的代码中未设置

$id,引用它会生成警告并运行以下查询:

UPDATE admin SET first_name='Rajendra', last_name='Arora' WHERE id=''

您需要在某处设置$id

还要注意SQL注入取决于此值的来源,如果是来自用户输入,则需要将其转换为整数,如果是字符串则转义为。

如果是整数,则不需要在其周围加上引号(WHERE id=1而不是WHERE id='1')。

答案 1 :(得分:1)

首先应设置您的ID,然后您的ID可能不是数据库中的字符串(varchar,char或text)。它应该是数字而且应该是数字。在这种情况下,请不要将ID包装在&#39;中。只有字符串数据应该包含在&#39;&#39;中。

答案 2 :(得分:0)

id是一个数字,而不是字符串。将其更改为:

mysqli_query($con,"UPDATE admin SET first_name='Rajendra', last_name='Arora' WHERE id=".$row['id']);

修改 您的id仅用于循环内。尝试将其从while更改为if

$result = mysqli_query($con,"SELECT * FROM admin limit 0, 1");
if ($row = mysqli_fetch_array($result)) {
    mysqli_query($con,"UPDATE admin SET first_name='Rajendra', last_name='Arora' WHERE id=$row['id']");
}

使用while的任何其他方式都将更改表中的所有用户名。 如果您在此表中有更多行,则需要采用其他方法。

答案 3 :(得分:0)

尝试这样的事情,删除单引号

// Assign ID here 
$id= 1;
mysqli_query($con,"UPDATE admin SET first_name='Rajendra', last_name='Arora' WHERE id='$id'");

答案 4 :(得分:0)

定义$id然后这样的事情应该有效:

if ($stmt = mysqli_prepare($conn, "UPDATE admin SET first_name='Rajendra', last_name='Arora' WHERE id=?")) {
    mysqli_stmt_bind_param($stmt, "i", $id);
    mysqli_stmt_execute($stmt);
}

如果$id来自$_GET$_POST变量,请务必不要直接将其嵌入查询中!