2014-11-22 6 views
-1

Я пытаюсь преобразовать MySQL в pdo, но я все время получаю сообщение об ошибке PDO, какие-либо идеи, что я могу делать неправильно. MySQL работает, и я не получаю ошибок только pdo. Я получаю ошибки.конвертировать mysqli в PDO получить ошибки

<?php 


header('Content-Type: application/json'); 



$db_conx = mysqli_connect("localhost", "root", "", "employees_db"); 

$lanId= $_POST["lanId"]; 
     $sql="SELECT * FROM names WHERE LanID='$lanId' "; 
     $query= mysqli_query($db_conx, $sql); 

    $row = mysqli_fetch_array($query, MYSQLI_ASSOC); 
    $rc= $row["FIRSTNAME"]. " " . $row['LASTNAME']; 

echo json_encode ($rc); 

?> 

Настоящая версия PDO.

<?php 

header('Content-Type: application/json'); 

// PDO 
$pdo = new PDO("mysql:host=localhost;dbname=employees_db", 'root', ''); 
$lanId= $_POST["lanId"];  
     $params = array(':LanID' => $lanId); 

$pdo->prepare(" 
    SELECT * FROM names 
    WHERE LanID='$LanID'"); 

$pdo->execute($params); 

$result = $pdo->fetch(PDO::FETCH_ASSOC); 

    $rc= $result->FIRSTNAME. " " . $result->LASTNAME; 

echo json_encode ($rc); 

?> 

здесь Json с AJAX, который получает фамилию и имя в имя текстового поля при вводе идентификатора в lanId текстовое поле

$(document).ready(function(){ 
     $("#lanId").change(function(){ 
      var lanId=$(this).val(); 
      if(lanId != ''){ 
        $.ajax({ 
           type:"post", 
           url:"insert.php", 
           data:"lanId="+lanId, 
           datatype:"json", 
           success:function(data){ $("#name").val(data); 
           $('#name').css("background-color","#B3CBD6" ) 
           $('#name').animate({backgroundColor: "#ffffff"}); 
           }, 
           error: function(response){ 
    alert("error scripting") } 

                  }); 
      } 
      else{ 
       $("#name").val(""); 
       } 

      }); 
    }); 
+0

Какую ошибку вы получаете? – Mureinik

ответ

4
$pdo->prepare(" 
    SELECT * FROM names 
    WHERE LanID='$LanID'"); 

Это должно быть

$query = $pdo->prepare(" 
    SELECT * FROM names 
    WHERE LanID=:LanID"); 

Затем используйте

$query->execute($params);

Посмотрите на примере 2 здесь http://php.net/manual/en/pdostatement.execute.php

редактирования: полный код:

<?php 

header('Content-Type: application/json'); 

// PDO 
$pdo = new PDO("mysql:host=localhost;dbname=employees_db", 'root', ''); 
$lanId= $_POST["lanId"];  
     $params = array(':LanID' => $lanId); 

$query = $pdo->prepare(" 
    SELECT * FROM names 
    WHERE LanID=:LanID"); 

$query->execute($params); 

$result = $query->fetch(PDO::FETCH_ASSOC); 

$rc= $result['FIRSTNAME'] . " " . $result['LASTNAME']; 

echo json_encode ($rc); 

?> 
+1

У меня было это первоначально, но изменил его на первый пример, потому что я получал ошибки. Я просто изменил его на это, и я получаю эту ошибку [22-ноябрь-2014 19:11:44 Европа/Париж] PHP Неустранимая ошибка: вызов неопределенного метода PDO :: execute() в C: \ wamp \ www \ test \ insert.php в строке 15 [22-ноябрь-2014 19:11:44 Европа/Париж] PHP Трассировка стека: [22-ноябрь-2014 19:11:44 Европа/Париж] PHP 1. {main }() C: \ wamp \ www \ test \ insert.php: 0 – Veronica

+0

Обновлено, пропущены некоторые дополнительные ошибки. – rjdown

+0

Я получаю ту же ошибку – Veronica