php:将pdo内容转换为mysqli

时间:2012-02-04 00:41:32

标签: php jquery pdo mysqli

我正在使用一段很好的代码来使用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));

}

1 个答案:

答案 0 :(得分:2)

我的推荐?找另一个主人。从PDO到mysqli不是一个好主意,因为你会浪费时间将代码移植到一个不太便携的状态。

- 编辑 -

您可以尝试以下代码段,如果它不起作用,它应该让您入门。我无法测试它,因为我的服务器都没有编译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的更多信息。

无论如何,祝你好运。