我在不同的更新语句中使用 select 的值时遇到问题。
下面,我运行一个 select 语句,print_r($existingContent)
正在打印带有 num_rows、field_count 等的对象。但我不知道如何转储我需要的 ID。
我目前在这一行遇到错误:
WHERE id = $existingContent->existingContent
表示 $existingContent 是一个未定义的属性。我假设这是因为我如何从选择中设置它,但我无法调试,因为我的 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);
}
最佳答案
一旦你通过避免 sql injection susceptible code 解决了问题,问题就会消失。
在这种情况下,PHP 中无法出现更复杂的字符串插值,例如 $existingContent->existingContent
。
您还可以将 SELECT
和 UPDATE
合并到单个 UPDATE
查询中。
UPDATE content
JOIN panels ON content.id = panels.cont_id
SET content = :content
WHERE page_id = :page
关于php - 使用更新中选择的值,获取未定义的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52359465/