php - PHP - 将 MySQL 查询从 mysql_query 更改为 PDO 的问题
问题描述
去年我接手了一个网页的支持。这个页面部分仍然是用 mysql_querys 编写的,这就是服务器仍然运行的原因PHP 5.6
(这会导致不必要的成本)。为了最终将服务器更改为PHP 7.x
,我实际上正在努力将仍然使用的脚本更改mysql_query
为 PDO。在部分情况下,这没有任何问题。但是现在经过长时间的错误搜索,其中一个脚本仍然无法工作。所以我希望这个社区中的某个人可以查看脚本并帮助我找到错误。
MySQL 查询肯定是正确的并给出了结果。所以问题一定出在 PDO 语法上。
这是迄今为止使用的脚本(我只简化了输出):
$link = mysql_connect($sHost, $sUser, $sPass);
mysql_select_db($sDBName, $link);
$sql1 = "SELECT * FROM `" . $table . "` WHERE `index` = " . $_REQUEST['id'];
$erg1 = mysql_query($sql1, $link) or die("Fehler: " .mysql_error());
$result1[0] = mysql_fetch_array($erg1);
echo $result1[0]["kreis"];
结果:柏林
这是现在对 PDO 的脚本更改:
if(isset($_GET['id'])) {
$id = $_GET['id'];
} else {
die("Bitte eine ?id übergeben");
}
$pdo2 = new PDO(sprintf('mysql:host=%s;dbname=%s', $sHost, $DBName), $sUser, $sPass);
$utf8 = $pdo2->prepare("SET NAMES UTF8");
$result_check = $utf8->execute();
$table = "orte_bb";
$sql1 = "SELECT * FROM `" . $table . "` WHERE `index` = ?";
$statementbb = $pdo2->prepare($sql1);
$erg1 = $statementbb->execute(array($id));
while ($result1 = $statementbb->fetch(PDO::FETCH_ASSOC))
{
echo $result1['kreis'];
}
结果:空数组
这意味着,PDO$statementbb
接缝到文件没有数据集。这个问题,我无法回答我,是,为什么会发生这种情况。
当有人可以看一看并给我一个线索时,我会很高兴。
谢谢 bagira41berl
解决方案
现在我自己发现了错误(它停留在细节中)。错误在第一个 PDO 行中:
$pdo2 = new PDO(sprintf('mysql:host=%s;dbname=%s', $sHost, $DBName), $sUser, $sPass);
它是用于数据库名称的变量,其中缺少 1 个字母,这并没有脱颖而出。我将此行的语法更正为:
$pdo2 = new PDO(sprintf('mysql:host=%s;dbname=%s', $sHost, $sDBName), $sUser, $sPass);
现在它可以工作了。
最好的问候 baerlinerbaer
推荐阅读
- javascript - 如何在 REACT JS 上将 arrayBuffer 从上传的音频文件转换为 mp3?
- python - selenium ,如何按原样获取whatsapp消息的元素?
- processmaker - 在 ProcessMaker 4 OpenSource 中更改请求的标题
- python - 如何将一个字典中的值作为项目合并到在“for”循环中创建的另一个字典?
- excel - Excel图表根据屏幕分辨率放置在不同的位置
- javascript - 由于列大小相等,引导程序网格在引导程序 4 中未正确对齐
- c++ - 分配大的多维向量会导致内存“过冲”
- postgresql - 尝试使用 Spring 连接 Heroku PostgreSQL 时连接失败
- python - 如何在独立服务器上部署streamlit
- go - 如何不在 http 客户端中应用代理设置