php - 在 php7.2 中绑定 PDO 变量不起作用
问题描述
我无法弄清楚为什么下面的“检查 mysql 表是否存在函数”在将我的 php 版本升级到 7.2 后不再工作
它现在总是返回 false/空数组,即使表存在。
我一直尝试检查变量是否已定义并在每个阶段手动输出它们的(字符串)值。当我这样做时,我得到了预期的结果(即返回的行/秒) - 但我似乎无法绑定它们。
public function tableExists($name) {
// Try a select statement against the table
// Run it in try/catch in case PDO is in ERRMODE_EXCEPTION.
$dbname = $this->DB_NAME;
try {
$result = $this->select("SELECT table_schema, table_name FROM information_schema.tables WHERE table_schema = :DB_NAME AND table_name = :name", array(':DB_NAME' => $dbname, ':name' => $name));
} catch (Exception $e) {
// We got an exception == table not found
$result = FALSE; //$e->getMessage();
}
// Result is either boolean FALSE (no table found) or PDOStatement Object (table found)
return $result;
}
我下面的选择函数肯定会收到正确的值,所以我必须以不再适用于 php7.2 的方式绑定它们。
我也尝试过bindParam
,而不是bindValue
希望可能有效,但无济于事。
/*
*Select
*@param string $sql - An SQL string
*@param array $array - An array of parameters to bind. Default is empty array
*@param constant $fetchMode - A PDO fetchmode. Default is fetch_assoc
*return mixed
*/
public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC) {
$sth = $this->prepare($sql);
foreach ($array as $key => $value) {
if($value == (int)$value)
$sth->bindValue("$key", $value, PDO::PARAM_INT);
else
$sth->bindValue("$key", $value);
}
$sth->execute();
$this->rowCount = $sth->rowCount();
return $sth->fetchAll($fetchMode);
}
非常感谢任何帮助!
我认为这会有所帮助 - 但它没有:PDO 语句在 PHP 7 中不再起作用
解决方案
推荐阅读
- docker - 无根 docker-compose 无法构建时间刻度图像
- nginx - 如何使用 Ansible Playbook 安装特定版本的 Nginx?
- reactjs - React 类组件对我来说不能正常工作
- python - 从包含某些字符的 CSV 文件中删除行
- excel - 突出显示包含 * 的单元格突出显示所有包含文本的单元格
- python - 如何让我的随机移动对象在pygame中以特定角度移动
- apache-spark - 如何使用 pyspark 更新大型 SQL 表?
- file - 会话参数 $AppConnection_SF1 Informatica PowerCenter 缺少初始值
- reactjs - 使用箭头键导航时如何使下拉菜单滚动
- apache - htaccess 重定向添加前缀