如何使用更新语句更新数据库值?

时间:2016-07-11 06:07:22

标签: php mysql

我正在尝试将'company_name', 'company_add', 'price'更新为主键'id',但它会向我显示'something went wrong'消息以及'undefined id'错误。请帮帮我!

<?php
include('data_conn.php');

if(isset($_POST['sub']))
{
    $comname=$_POST['cname'];
    $comadd=$_POST['cadd'];
    $pri=$_POST['price'];

    $query ="UPDATE login SET company_name=$comname,company_add=$comadd,price=$pri WHERE id=$id";
    $result = mysql_query($query);
    echo $result;
    if(!$result)
    {
        echo '<script language="javascript">';
        echo 'alert("something went Wrong...:("); location.href="edit.php"';
        echo '</script>';
    }else{
        echo '<script language="javascript">';
        echo 'alert("successfully updated!!!"); location.href="edit.php"';
        echo '</script>';
    }
}
?>

2 个答案:

答案 0 :(得分:2)

您可以使用以下方法来避免使用直接替换值,而不是使用直接替换值。

你基本上有两个选择来实现这个目标:

  1. 使用PDO(适用于任何支持的数据库驱动程序):

    $stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');
    
    $stmt->execute(array('name' => $name));
    
    foreach ($stmt as $row) {
        // do something with $row
    }
  2. 使用MySQLi(用于MySQL):

    $stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
    $stmt->bind_param('s', $name);
    
    $stmt->execute();
    
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        // do something with $row
    }
  3. 请参阅How can I prevent SQL injection in PHP?

答案 1 :(得分:0)

您必须将字符值放在单引号中:

$query ="UPDATE login SET company_name='$comname',company_add='$comadd',price=$pri WHERE id=$id";
使用已弃用的mysql_* API

停止。将mysqli_*PDO与准备好的语句一起使用。 Atleast使用错误函数来获取错误消息。