2013-11-17 2 views
-1

РЕДАКТИРОВАНИЕПреобразование Mysqli в PDO

$sql = "SELECT " . $tb . ".a 
     FROM " . $tb . 
     " WHERE " . $tb . ".b = :b"; 

$sth = $con->prepare($sql); 
$sth->execute(array(':b' => $b)); 
$row = $sth->fetch(PDO::FETCH_ASSOC); 
$row = $row[b]; 

хотел добавить это лишь небольшой пример того, что было сделано с выполнения и массива. Преобразование строки $ было просто испытанием.

Верьте или нет, решение было фиктивным движением с моей стороны. Решение превратило $ row ['b'] в $ row [b]. Просто удалите кавычки. И все сделано и работает. Ох, а также толкнул материал в $ sql, поэтому он сделал все, на что лучше смотреть.

ORIGINAL

Я обменивать свой код более от Mysqli к PDO. И мог бы здесь немного помочь.

$row = $con->query(
      $con->prepare(
       "SELECT " . $tb . ".a 
       FROM " . $tb . " 
       WHERE " . $tb . ".b = '" . $b . "'" 
      )->execute() 
)->fetch(PDO::FETCH_ASSOC); 

Мой оригинальный Mysqli, что работал отлично с тем, что я делал:

$row = mysqli_fetch_row(
      mysqli_query(
       $con,"SELECT " . $tb . ".a 
       FROM " . $tb . " 
       WHERE " . $tb . ".b = '" . $b . "'" 
      ) 
); 

if (isset($row)) 

Что позволило мне сделать IsSet на $ подряд. В конце концов, я хотел бы создать PDO так же, как я создал Mysqli. Возможно, и с изменениями, но главная проблема - попытаться получить этот функциональный код. Затем дополнения могут быть выполнены после. Благодарю.

P.S. Я знаю, что код PDO неверен, поэтому, пожалуйста, не указывайте на очевидное. Просто скажи мне, как лучше всего это сработает. Я пробовал изучать PDO с 5 минут до этого сообщения. Так что легко.)

P.S.S. Этот код был кодом, взятым из mysql on, если существовала строка $. Немного изменился и объединился. Затем, наконец, портировали в Мыски. И теперь пытаюсь передать его PDO. Я немного читал документацию по PDO. И, похоже, эта структура также будет работать отчасти для этого. Его просто все о том, чтобы убрать его.

+0

Не хулиганить свои сообщения, когда людям дали свое время, чтобы попытаться помочь вам. – Flexo

+0

@Flexo Не было времени, чтобы помочь, если вы не возражаете, что я нападаю. Решение, однако, было глупым и легким, и если бы у него были зубы, я бы укусила меня. И это меняло «b» на b. Нет кавычек. Следующий ответ, который показал структуру, все равно заставил бы меня столкнуться с этой глупой ошибкой. Хотя, все сделано сейчас. И я могу сорвать мои сообщения. До тех пор, пока я не навредил другим или не скажу в них ничего отрицательного. Я имею право редактировать их. Если в TOS нет чего-то, что говорит, что я не могу открыто редактировать свои собственные сообщения. Который я буду любезно читать теперь только, чтобы видеть. – Esoterica

+0

Все, что вы публикуете, размещается под лицензией CC. Вопрос вопросов и ответов заключается в том, что они обеспечивают долгосрочную выгоду не только вам, но и будущим читателям. Вы можете вносить конструктивные изменения, но воздерживаться от их вандализма. Постскриптум если вы решите свою проблему, вы должны опубликовать ее как ответ, а не как отредактировать вопрос. – Flexo

ответ

1

Я использую следующий шаблон, который имеет преимущество предотвращения инъекции SQL:

$statement = $con->prepare("SELECT * FROM table WHERE id = :id"); 
$statement->bindValue(":id", $id); 
$statement->execute(); 
while($row = $statement->fetch(PDO::FETCH_ASSOC)) { 
    print_r($row); 
} 
+0

У вас есть предложение о том, как это сделать, используя подготовку и запрос. Как и выше? Определить существование $ row. Я бы предпочел бы короткую форму и слияние ее, как и то, как я узнаю и будущий код сам. Просто PDO является новым. – Esoterica

+0

Вы не можете использовать команду подготовки и запроса. запрос работает со строковым оператором, а prepare возвращает объект-оператор pdo. – quentinadam

Смежные вопросы