2017-09-22 9 views
0
print_r($con->_con); 
echo "(SELECT * FROM fvwItems WHERE itemname LIKE :key)"; 
echo "\PDO::errorInfo():\n"; 
print_r($con->_con->errorInfo());// no error showing 
$stmt = $con->_con->prepare("(SELECT * FROM fvwItems WHERE itemname LIKE :key)", array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); 
echo $stmt;//not putting any output 
echo "\PDO::errorInfo():\n"; 
print_r($con->_con->errorInfo()); 

J'ai la requête ci-dessus et je n'obtenirpdo requête php ne montrant rien pour le débogage

Resource id #10 
(SELECT * FROM fvwItems WHERE itemname LIKE :key)\PDO::errorInfo(): 

Dans les outils de développement de chrome. J'ai aussi la question à l'intérieur try/catch mais je ne sais pas quelle erreur ou quel est le problème dans ma requête, car il ne me donne pas assez d'informations pour dire qui a des problèmes.

Tout au-delà du $stmt = $con->_con->prepare("(SELECT * FROM fvwItems WHERE itemname LIKE :key)", array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); n'apparaît pas non plus d'erreur ou non

Quelle pourrait être la meilleure façon de vérifier ce qui ne va pas avec la requête?

UPDATE

Ma connexion est comme ceci:

$connectionOptions = array(
      "Database" => DB_NAME, 
      "Uid" => DB_USER, 
      "PWD" => DB_PASS 
     ); 
     //Establishes the connection 
     $this->_connection = sqlsrv_connect($serverName, $connectionOptions); 

Je pensais que je besoin d'être new PDO afin qu'il fonctionnera?

Comme

$this->_connection = new PDO("sqlsrv:Server=$serverName;Database=".DB_NAME.";",DB_USER,DB_PASS); 
print_r($this->_connection); 

résultant en

PDO Object 
(
) 

Mais ce ne se connecte pas et il devient erreur

+0

Vous ne nous dites pas ce que '$ de con- > _con' est, a-t-il réellement une méthode 'prepare()'? Avez-vous configuré PHP pour afficher les messages d'erreur utiles (https://stackoverflow.com/q/845021/1255289)? – miken32

+0

Les réponses fournies étaient-elles utiles? Vous devriez ** upvote ** _all réponses_sont utiles, et ** marque acceptée ** la _réponse_ qui répond le mieux à votre question. Cela marquera la question comme "fermée", et vous donnera une certaine réputation sur le site. Voir https://stackoverflow.com/help/someone-answers pour plus d'informations. – miken32

Répondre

0

Après la création objet AOP définir cette option:

$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
0

Votre Le code ci-dessus n'est pas clair, mais il semble que vous créez un objet de connexion avec sqlsrv_connect(), puis que vous essayez de le traiter comme un objet PDO. Évidemment, cela ne va pas fonctionner.

Maintenant, dans la vraie vie, vous allez avoir beaucoup plus flexible et méthode utile d'attraper des erreurs, mais cela vous montrera les bases:

try { 
    $opts = [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]; 
    $conn = new \PDO("sqlsrv:Server=$serverName;Database=" . DB_NAME . ";", DB_USER, DB_PASS, $opts); 
    $query = "SELECT * FROM fvwItems WHERE itemname LIKE :key"; 
    $stmt = $conn->prepare($query); 
    $param = [":key" => $the_keys_value]; 
    $stmt->execute($param); 
    $rows = $stmt->fetch(\PDO::FETCH_ASSOC); 
} catch (\PDOException $e) { 
    echo $e->getMessage(); 
}