2012-02-04 2 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

기본적으로 거기에서 번역해야하는 단일 쿼리입니다. 너 뭐 해봤 니? – 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 *으로가는 것은 필레 미뇽에서 맨 위로라면으로가는 것과 같습니다. –

+0

필자는 그 기능이 중요하기 때문에 결국 PDO로 그립을 시작해야하지만, 위와 같은 것이 MySQLi에서 가능한지 또는 어떻게 볼 수 있는지 알고 싶습니다. 나는 자습서에 갇힐 필요가 있음에도 불구하고 호스트 (클라이언트의 계정)를 즉시 변경할 가능성이 없기 때문에 위의 내용을 빠르게 수정하면 좋을 것입니다. – caseyc