-1

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

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

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

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

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

4

4 回答 4

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。不确定这是否是您想要做的。

于 2012-06-07T18:21:27.910 回答
1

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

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

于 2012-06-07T18:22:20.953 回答
0

简短的回答:

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

但你应该确保你没有 sql 注入问题。确保 CleanUserInput 将您从那里拯救出来!

于 2012-06-07T18:21:56.040 回答
0
$result = mysql_query("UPDATE Suppliers SET SuppName = '{$name}' 
WHERE SuppName = '{$pulldown}'");

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

于 2012-06-07T18:39:41.383 回答