php - 在 if/else 内更新的 where 子句中使用 select 语句的值

标签 php mysql sql

我重构了这个脚本,首先使用 select 语句来查看某个表中是否存在记录。

现在,如果什么都不存在,我只是插入。但我的误解是现在更新了。我已经将 $content 作为变量。

但是如何从我的选择中获取 existingContent 并在更新的 where 子句中使用它(如果在选择中找到现有记录,则调用该子句):

$content = $_POST['page_content'];
$panelID = $_POST['panel_type'];
$pageID = $_POST['page_id'];

$checkIfExists = "SELECT COUNT(*) AS count, cont_id as existingContent FROM 
 panels WHERE panel_type_id = $panelID AND page_id = $pageID";

if($mysqlConn->query($checkIfExists)->count = 0){
     //working insert
else{
    $updateContent = "
    UPDATE content
        SET content = '$content'
        WHERE id = /*this would be existingContent from my select above*/
 }

完整更新的代码:

$content = $_POST['page_content'];
$panelID = $_POST['panel_type'];
$pageID = $_POST['page_id'];

$checkIfExists = "SELECT COUNT(*) AS count, cont_id as existingContent FROM panels WHERE panel_type_id = $panelID AND page_id = $pageID";

$existingContent = $mysqlConn->query($checkIfExists);

if($existingContent->count == 0){

    $addContent = "
        INSERT INTO content(content)
        VALUES('$content');
    ";

    if ($mysqlConn->query($addContent) === TRUE) {
        $cont_id = $mysqlConn->insert_id;
        $data['last_insert_id'] = $cont_id;
        echo json_encode($data);
    } else {
        echo "Error: " . $addContent . "<br>" . $mysqlConn->error;
    }


    $addPanel = "
        INSERT INTO panels(panel_type_id, page_id, cont_id)
        VALUES ('$panelID', '$pageID', '$cont_id');
    ";

    if ($mysqlConn->query($addPanel) === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $addPanel . "<br>" . $mysqlConn->error;
    }

else{

    $updateContent = "
        UPDATE content
            SET content = '$content'
            WHERE id = $existingContent->existingContent;
    ";

}

最佳答案

$content = $_POST['page_content'];
$panelID = $_POST['panel_type'];
$pageID = $_POST['page_id'];

$checkIfExists = "SELECT COUNT(*) AS count, cont_id as existingContent FROM 
 panels WHERE panel_type_id = $panelID AND page_id = $pageID";

$existingContent = $mysqlConn->query($checkIfExists);

// You had an error in your IF statement you have used (=) instead of (==)
if($existingContent->count == 0){
     //working insert
else{
    $updateContent = "
    UPDATE content
        SET content = '$content'
        WHERE id = $existingContent->existingContent
 }

如果您的代码非常不安全,建议您应该在查询中使用值绑定(bind)。

这应该可以帮助您入门,但是请研究一下值绑定(bind)。

祝你好运

关于php - 在 if/else 内更新的 where 子句中使用 select 语句的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52358424/

相关文章:

javascript - 无法读取ajax中未定义的属性 'length'

mysql - 一次对不同的表运行相同的 sql 查询(bash 脚本)

sql - 基于多个字段的完整外部联接

sql - Oracle-SQL 中没有时间值的日期总是 00 :00:00?

php - PHP脚本创建损坏的SQLite数据库

php - SQLite PDO 绑定(bind)不起作用?

php - 如果有数据则只显示 h3

mysql - 从哪个表中获取字段

mysql - 无法在 google cloud shell 中设置 mysql

php - 使用 MySQL 或 PHP 防止重复条目的正确方法