选择列值,这是另一列名称,然后更新第二列字段

时间:2016-01-08 00:32:02

标签: php mysql

我正在使用mysql和phpmyadmin作为数据库。

我也在网站的前端使用php。

我的数据库中有两列,我正在为此示例工作。

我有一个名为temp_column的列,另一个名为example_column的列。

在名为temp_column的列中,我将使用其他列的名称,在本例中为example_column。

我希望能够从temp_column读取,检索此值(其中包含example_column),并更新example_column中的值。

我尝试过像这样的2个单独的查询,但这不起作用。

$userIdentity = $_SESSION['userIdentity'];

$variable = "SELECT clear FROM UserInfo WHERE userIdentity = '$userIdentity";

$result1 = $dbc->query($variable);

第二次查询

$userIdentity = $_SESSION['userIdentity'];

$sql = "UPDATE UserInfo SET $result1 = NOT go WHERE userIdentity = '$userIdentity'";

    $result = $dbc->query($sql); 

我也尝试过使用CASE和内联if语句但没有成功。

我正在研究这个项目作为研究项目的一部分,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

你的引言在两个查询中都很糟糕。

此外,除非您使用自定义数据库类,否则我怀疑$result1是需要从中提取值的结果集。我在以下代码中假设了PDO:

$userIdentity = $_SESSION['userIdentity'];
$sql = "SELECT clear FROM UserInfo WHERE userIdentity = '$userIdentity'";
$result1 = $dbc->query($sql);
$colname = $result1->fetchColumn();
$sql = "UPDATE UserInfo SET $result1 = 'NOT go' WHERE userIdentity = '$userIdentity'";
$result = $dbc->query($sql);

继续假设它是PDO,你实际应该做的是:

$userIdentity = $_SESSION['userIdentity'];
$stmt = $dbc->prepare("SELECT clear FROM UserInfo WHERE userIdentity = ?");
$result = $stmt->execute(array($userIdentity));
$colname = $result1->fetchColumn();
$stmt = $dbc->prepare("UPDATE UserInfo SET $result1 = 'NOT go' WHERE userIdentity = ?");
$result = $stmt->execute(array($userIdentity));

准备好的语句可以保护您的查询免受错误值的影响。