【问题标题】:php: convert pdo content to mysqliphp: 将 pdo 内容转换为 mysqli
【发布时间】:2012-02-26 14:05:12
【问题描述】:

我正在使用一段很好的代码来使用drag and drop 重新排序数据库内容。我可以通过在 php.ini 文件中启用 PDO 扩展来使其在本地工作,但我的托管包(共享)不允许同时使用 PDO 和 MySQLi。我不熟悉 PDO,如果可能的话,我将不胜感激在重写以下部分以使用 MySQLi 的任何帮助。 谢谢。

<?php
if (isset($_POST['orders'])) {

} else {
    echo json_encode(array('error' => true));
}

$orders = explode('&', $_POST['orders']);

$array = array();

foreach($orders as $item) {
    $item = explode('=', $item);
    $item = explode('_', $item[1]);
    $array[] = $item[1];
}

try {

    $objDb = new PDO('mysql:host=localhost;dbname=test', 'user', 'pw');
    $objDb->exec("SET CHARACTER SET utf8");

    foreach($array as $key => $value) {
        $key = $key + 1;
        $sql = "UPDATE `artwork` 
               SET `listorder` = ?
               WHERE `id` = ?";
               echo $sql;

        $objDb->prepare($sql)->execute(array($key, $value));        
    }

    echo json_encode(array('error' => false));

} catch(Exception $e) {

    echo json_encode(array('error' => true));

}

【问题讨论】:

  • 这基本上是一个您必须在那里翻译的查询。你试过什么?

标签: php jquery pdo mysqli


【解决方案1】:

我的建议?寻找另一个主机。从 PDO 转到 mysqli 不是一个好主意,因为将代码移植到可移植性较差的状态会浪费时间。

-- 编辑--

您可以尝试以下代码 sn-p,如果它不起作用,它应该可以帮助您入门。我无法测试它,因为我的服务器都没有编译 mysql* 模块。

$dbo = new mysqli('localhost', 'user', 'password', 'database');

if (mysqli_connect_error()) {
    echo sprintf('Unable to connect: ErrNo: (%d), ErrMsg: (%s)', mysqli_connect_errno, mysqli_connect_error());
    exit;
}

foreach ($array as $key => $value) {

    $key = $key + 1;

    $sql =  "UPDATE `artwork` SET `listorder` = " . (int) $key . "  WHERE `id` = " . (int) $value;

    $dbo->query($sql);
}

$dbo->close();

您可以获取更多关于mysqli查询和其他功能here的信息。

无论如何,祝你好运。

【讨论】:

  • +1 听起来像是垃圾主机。更不用说与不太健壮的 mysql* 扩展相比,PDO 是对数据库进行操作的事实上的“正确”方式
  • 同意 110%。从 PDO 到应该发生的任何事情的唯一移植是如果您要迁移到 ORM。从 PDO 到 mysql* 就像从菲力牛排回到顶级拉面。
  • 我可能最终会这样做,因为该功能相当重要,我也需要开始掌握 PDO,但我很想看看是否或如何为 MySQLi 完成上述操作。我很感激我需要陷入教程,但如果可能的话,对上述问题进行快速修复会很好,因为我不太可能立即更改主机(客户的帐户)。
  • @caseyc:用 sn-p 更新帖子。
  • @Mike MySQLi 也有准备好的语句,不用一路回到石器时代。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 1970-01-01
  • 2019-11-07
  • 2015-04-05
  • 2015-01-25
  • 2019-12-19
  • 2017-09-27
相关资源
最近更新 更多