我是PHP的新手,所以听起来可能很愚蠢。
我正在尝试更新数据库,这是我的代码到目前为止。
$pulldown = CleanUserInput($_GET['q']);
$name = CleanUserInput($_POST['name']);
$result = mysql_query("UPDATE Suppliers SET SuppName = ('$name')
WHERE SuppName = ('$pulldown')");
如何使用$ _GET设置要更新的列?
答案 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附加查询字符串来混合POST
和action
表单,但我怀疑你在这里尝试做什么。
作为旁注,您的代码容易受到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}'");
使用此查询..您的代码中存在语法错误