在更新中使用select中的值,获取未定义的属性

时间:2018-09-17 00:24:34

标签: php mysql sql

在其他更新语句中为select使用值时遇到问题。

下面,我运行一条select语句,print_r($existingContent)使用num_rows,field_count等打印对象。但是我不知道如何转储所需的ID。

我当前在此行遇到错误:

WHERE id = $existingContent->existingContent

说$ existingContent是一个未定义的属性。我假设这是因为我是如何通过select设置它的,但是我无法调试,因为我的print_r没有显示我的实际响应的结构。我只需要在我的where子句中使用该select语句中的ID

$checkContentExists = "SELECT cont_id as existingContent FROM panels WHERE panel_type_id = $panelID AND page_id = $pageID";

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

print_r($existingContent);  

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

    if($mysqlConn->query($updateContent) === TRUE){
        echo "Record Updated";
    }

更新

while ($row = mysqli_fetch_assoc($existingContent)){

    print_r($row);

   //If i use the commented out code I get a 500 error

        // $updateContent = "
   //       UPDATE content
   //           SET content = '$content'
   //           WHERE id = $row[existingContent];
   //      ";

   //      $updateResult = $mysqlConn->query($updateContent);
 }

1 个答案:

答案 0 :(得分:0)

一旦您避免使用sql injection susceptible code解决了问题,问题就会消失。

在这种情况下,PHP中不会发生更复杂的字符串内插,例如$existingContent->existingContent

您还可以将SELECTUPDATE组合成一个UPDATE查询。

UPDATE content
JOIN panels ON content.id = panels.cont_id
SET content = :content
WHERE page_id = :page