任何人都可以帮助我
这样可以正常工作::
$stmt = $this->conn->prepare("SHOW TABLES FROM db LIKE 'xyz'"); //tablename hardcoded
$stmt->execute();
$rows = $stmt->fetch(PDO::FETCH_ASSOC); //fetchAll
但是,如果我尝试绑定我的表名,因为它在我的脚本中是动态的::
$stmt = $this->conn->prepare("SHOW TABLES FROM db LIKE :tbl"); //tablename hardcoded
$tbl = "xyz";
$stmt->bindParam(":tbl", $tbl, PDO::PARAM_STR);
这会出错,
$stmt = $this->conn->prepare("SHOW TABLES FROM cens LIKE ?");
$tbl = "xyz";
$stmt->bindParam(1, $tbl, PDO::PARAM_STR);
这也会出错,
错误是
致命错误:未捕获的异常' PDOException' with message' SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在#"'附近使用正确的语法。在第1行'在/opt/lampp/htdocs/PDO/test.php:132 堆栈跟踪:
我在查询和绑定变量中尝试使用引号,但它没有工作
我想绑定表名
答案 0 :(得分:0)
尝试以下方法:
$string = 'xyz';
$somethingelse ="%".$string."%";
$sth =$dbh->prepare("select * from tablename WHERE something LIKE :somethingelse")
$sth->bindParam(":somethingelse",$somethingelse)
另一种选择是:
$string = 'xyz';
$somethingelse ="%".$string."%";
$sth =$dbh->prepare("select * from tablename WHERE something LIKE CONCAT(:string, '%')")
$sth->bindParam(":string",$string)
这些方法中的任何一个都适合你。