更新数据库时使用$ _GET

时间:2012-06-07 18:18:23

标签: php mysql

我是PHP的新手,所以听起来可能很愚蠢。

我正在尝试更新数据库,这是我的代码到目前为止。

$pulldown = CleanUserInput($_GET['q']);
$name = CleanUserInput($_POST['name']);

$result = mysql_query("UPDATE Suppliers SET SuppName = ('$name') 
WHERE SuppName = ('$pulldown')");

如何使用$ _GET设置要更新的列?

4 个答案:

答案 0 :(得分:1)

假设您的变量正确传递给此脚本,脚本的第3行应如下所示:

$result = mysql_query("UPDATE Suppliers SET SuppName = '".$name."' WHERE SuppName = '".$pulldown."';") or die(mysql_error());

要通过$ _GET变量设置要更新的列名,您的代码可能如下所示:

$pulldown = CleanUserInput($_GET['q']);
$name = CleanUserInput($_POST['name']);
$column_name = CleanUserInput($_GET['column_name']);
$result = mysql_query("UPDATE Suppliers SET `".$column_name."` = '".$name."' WHERE `".$column_name."` = '".$pulldown."';") or die(mysql_error());

当然,这将替换变量$column_name的列中的值。不确定这是不是你想要做的。

答案 1 :(得分:1)

如果您的表单有<form method="post">,并且您的<input>(或<select>}个元素之一具有name="q'属性,则会在$_POST中找到},而不是$_GET。虽然技术上可以通过在表单的GET属性中的url附加查询字符串来混合POSTaction表单,但我怀疑你在这里尝试做什么。

作为旁注,您的代码容易受到SQL Injection的攻击。您应该使用参数化查询。

答案 2 :(得分:0)

简短回答:

$column = CleanUserInput($_POST['column']);
$result = mysql_query("UPDATE Suppliers SET $column = '$name' WHERE SuppName = '$pulldown'");

但你应该确保你没有SQL注入问题。确保CleanUserInput可以帮助您远离它!

答案 3 :(得分:0)

$result = mysql_query("UPDATE Suppliers SET SuppName = '{$name}' 
WHERE SuppName = '{$pulldown}'");

使用此查询..您的代码中存在语法错误