2012-02-04 4 views
-1

drag and dropを使用してdbコンテンツを並べ替えるための素晴らしいコードを使用しています。 php.iniファイルのPDO拡張機能を有効にすることで、ローカルで作業することができますが、私のホスティングパッケージ(共有)はPDOとMySQLiを同時に許可しません。私はPDOに精通していないので、可能であれば、次のセグメントをMySQLiで動作するように書き直してください。おかげさまで PHP: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)); 

} 
+3

これは、基本的に1つのクエリを翻訳する必要があります。何を試しましたか? – deceze

答えて

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に関する詳細な情報を得ることができます。

とにかく、幸運。

+5

+1ガベージ・ホストのように聞こえます。 PDOは言うまでもありませんが、堅牢性の低いmysql * extensions – rdlowrey

+0

110%に同意するのと比べて、DB上で動作する事実上の「正しい」方法です。 PDOから何かが起こるはずの唯一の移植は、あなたがORMに移行する場合です。 PDOからmysql *への移行は、filet mignonからtop ramenに戻るようなものです。 –

+0

私はその機能がかなり重要なので、PDOを手に入れなければならないかもしれませんが、MySQLiで上記のことができたかどうかを見たいと思っています。私はチュートリアルに執着する必要があることを感謝しますが、すぐにホスト(クライアントのアカウント)を変更する可能性が低いので、上記の簡単な修正が可能です。 – caseyc

関連する問題