gpt4 book ai didi

php - MySQLi 到 SQLSRV 的迁移 - MySQLi 的 fetch_assoc() 与 SQLSRV 的 fetch()

转载 作者:行者123 更新时间:2023-11-29 09:46:51 25 4
gpt4 key购买 nike

由于我的罪孽,我必须迁移(或者简单地说,重写)为仅与 MySQLi 一起使用而编写的支持功能。现在我尝试在 PDO 中完成所有操作,但对于某些代码,我认为可以通过重用旧脚本的某些部分并重新利用它们来加快速度。

到目前为止,它的工作方式就像一个魅力 - 稍微改变一下功能,并对代码进行小的甚至几乎微不足道的更改以使其正常工作。但在这里我被难住了。

我一直用while($row = $result->fetch_assoc())打印数据库中的所有行。我确实想让代码与旧代码的结构相似。下面是我尝试打印行,但在 SQLSRV 中它的工作方式不同。我可以通过使用像 for ($i=0; $i < $rowCount; $i++) 这样的 for 循环轻松显示行(没有内容)但这与我的代码相差太大。

观察下面的示例解决方案后,是否可以将上面的代码重新创建到 SQLSRV 解决方案中并保持相同的结构?

<小时/>

我的 MySQLi 解决方案:

                  $sql = "SELECT * FROM tasks ORDER BY PRIORITY DESC;";
$result = $conn->query($sql);// $conn is `$conn = new mysqli($servername, $username, $password, $db);`
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
echo "<br> FROM :".$row["FROM"];
echo "<br> DEPT :".$row["DEPT"];
echo "<br> TASK_NAME :".$row["TASK_NAME"];
echo "<br> PRIORITY :".$row["PRIORITY"];
}
}

这是我使用 MS SQLSRV 解决该问题的尝试:

                $stmt = $GLOBALS['conn']->prepare("SELECT * FROM tasks;"); 
$stmt->execute();
$stmt->fetchAll();
//
$rowCount = $stmt->rowCount();

//echo "<br> Row Count: ". $rowCount;

while ($rowCount > 0)
{
for ($row = $stmt->fetch())// For evident reasons that doesn't not work
{
echo "<br> FROM :".$row["FROM"];
echo "<br> DEPT :".$row["DEPT"];
echo "<br> TASK_NAME :".$row["TASK_NAME"];
echo "<br> PRIORITY :".$row["PRIORITY"];
}
}

最佳答案

摆脱$stmt->fetchAll();。这会获取所有行,因此循环不再需要处理任何内容。并且循环应该使用 while,而不是 for

或者将 fetchAll() 的结果分配给一个变量,然后循环遍历它。

$rows = $stmt->fetchAll();
if (count($rows) > 0) {
foreach ($rows as $row) {
echo "<br> FROM :".$row["FROM"];
echo "<br> DEPT :".$row["DEPT"];
echo "<br> TASK_NAME :".$row["TASK_NAME"];
echo "<br> PRIORITY :".$row["PRIORITY"];
}
}

关于php - MySQLi 到 SQLSRV 的迁移 - MySQLi 的 fetch_assoc() 与 SQLSRV 的 fetch(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55510621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com