所以我正在尝试创建一个动态SELECT查询,该查询只显示先前选择并存储在字符串$stANCol
中的列。
$idServ = 17; //$_GET(Selected);
$queryIsSelected = "SELECT $stANCol FROM camposservico WHERE idServico = ? ;";
$stmt = $mydb->prepare($queryIsSelected);
$stmt->bind_param("i", $idServ);
$stmt->execute();
$stANCol
的回音是
morada, dieta, dataIntervencao, sondaVesical, ecd,
sinaisVitais, riscoQueda, riscoAlergia, riscoTransfusao, riscoMultiRisco, obsQuadro, obs
这些列可能会根据选择的内容而改变。
$queryIsSelected
的回音是
SELECT morada, dieta, dataIntervencao, sondaVesical, ecd,
sinaisVitais, riscoQueda, riscoAlergia, riscoTransfusao,
riscoMultiRisco, obsQuadro, obs FROM camposservico WHERE idServico = ? ;
这个查询在phpMyAdmin上运行得很好,因此我的问题。我做错了还是不可能在SELECT上使用字符串变量?
编辑:原来这个代码没有任何问题,我的网页上有一个潜在的声明正在弄乱这个代码。感谢所有回复大家:)
答案 0 :(得分:3)
删除;来自您的查询
您' S:
$queryIsSelected = "SELECT $stANCol FROM camposservico WHERE idServico = ? ;";
删除后;
$queryIsSelected = "SELECT $stANCol FROM camposservico WHERE idServico = ? ";
它会被执行。
答案 1 :(得分:0)
我在您的查询中添加了单引号
$queryIsSelected = "SELECT $stANCol FROM `camposservico` WHERE `idServico` = ? ";
答案 2 :(得分:0)
试试这个
$queryIsSelected = "SELECT $stANCol FROM camposservico WHERE idServico = ? ;";
$stmt = $mydb->prepare($queryIsSelected);
$stmt->bind_param("i", $idServ);
// move this to here
$idServ = 17;
$stmt->execute();
也尝试使用类似的东西进行调试
if($stmt === false) {
trigger_error('Wrong SQL: ' . $queryIsSelected . ' Error: ' . $mydb->errno . ' ' . $mydb->error, E_USER_ERROR);
}