我正在使用一段很好的代码来使用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));
}
答案 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的更多信息。
无论如何,祝你好运。