如何用PHP转换2个MySQL查询

时间:2016-12-12 09:33:32

标签: php sql

我有这两个问题:

SELECT * FROM table_a WHERE id=1
UPDATE table_a SET column_a="abcd" WHERE id=1

我想知道如何将它们转换为PHP

3 个答案:

答案 0 :(得分:1)

您可以使用子查询:

UPDATE table_a SET column_a='abcd' WHERE id = ( 
   SELECT id FROM table_a WHERE id=1
);

在这种情况下,不需要子查询,因为id井来自table_a。

答案 1 :(得分:0)

我不确定我理解你的问题。我看到两种可能性:

只需执行查询

如果要执行不带变量部分的查询,可能需要使用PHP:

$pdo->exec(
    'SELECT * FROM table_a WHERE id=1;
    UPDATE table_a SET column_a="abcd" WHERE id=1'
);

如:

<?php

try {
    $pdo = new PDO(...);
    if (!$pdo->exec('SELECT * FROM table_a WHERE id=1; UPDATE table_a SET column_a="abcd" WHERE id=1')) {
        echo 'Error with the queries'.PHP_EOL;
    } else {
        echo 'Queries success'.PHP_EOL;
    }
} catch (Exception $e) {
    echo 'Error: '.$e->getMessage().PHP_EOL;
}

通过将查询与;分开,您可以一个接一个地运行它们

嵌套查询

否则,如果您尝试检索id查询中的UPDATE,则可以执行嵌套查询:

$pdo->exec(
    'UPDATE table_a SET column_a="abcd"
    WHERE id = (
        SELECT id
        FROM table_a
        WHERE id=1
    )'
);

如:

<?php

try {
    $pdo = new PDO(...);
    if (
        !$pdo->exec(
            'UPDATE table_a SET column_a="abcd"
            WHERE id = (
                SELECT id
                FROM table_a
                WHERE id=1
            )'
        )
    ) {
        echo 'Error with the queries'.PHP_EOL;
    } else {
        echo 'Queries success'.PHP_EOL;
    }
} catch (Exception $e) {
    echo 'Error: '.$e->getMessage().PHP_EOL;
}

假设

我假设您知道如何使用PDO MySQL驱动程序来使用PHP进行这些查询。否则,我建议您了解它如何与PHP一起使用,并注意不要使用mysql驱动程序(在PHP 7中已弃用),而是要更喜欢PDO或{ {1}}驱动程序

答案 2 :(得分:-1)

试试这个:

首先从表中选择所有列然后更新:     

$sql = 'SELECT * FROM table_a where id=1';
$qry = mysql_query($sql);
$count = count($qry);

if ($count > 1) {
    $id = $qry["id"];

    // update query
    $updatesql = 'UPDATE table_a SET column_a="abcd" WHERE id=$id';
    $updateqry = mysql_query($updatesql);

 if ($updateqry) {
        echo "updated";
    } else {
        echo "Something error occured while connecting with database";
    }
} else {
    echo "No record Found";
}