MySQL - 包含变量的SELECT查询不会执行

时间:2014-03-12 12:21:53

标签: php mysql sql dynamic execute

所以我正在尝试创建一个动态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上使用字符串变量?

编辑:原来这个代码没有任何问题,我的网页上有一个潜在的声明正在弄乱这个代码。感谢所有回复大家:)

3 个答案:

答案 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);
}