我正在尝试将'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>';
}
}
?>
您可以使用以下方法来避免 sql 注入,而不是使用直接替换值。
您基本上有两种选择来实现此目的:
-
使用 PDO(对于任何受支持的数据库驱动程序):
$stmt = $pdo->prepare('从员工中选择 * 其中名称 = :name');$stmt->execute(array('name' => $name));foreach ($stmt as $row) { 用$row做点什么}
-
使用 MySQLi(用于 MySQL):
$stmt = $dbConnection->准备('从员工中选择 * 其中姓名 = ?');$stmt->bind_param('s', $name);$stmt->执行();$result = $stmt->get_result();而 ($row = $result->fetch_assoc()) { 用$row做点什么}
请参考 如何防止 PHP 中的 SQL 注入?
您必须将字符值放在单引号中:
$query ="UPDATE login SET company_name='$comname',company_add='$comadd',price=$pri WHERE id=$id";
停止使用已弃用的 mysql_*
API。将mysqli_*
或PDO
与准备好的语句一起使用。至少使用错误函数来获取错误消息。