2017-09-22 1 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()); 

ich die Abfrage oben haben und ich bekomme nurgU php Abfrage nichts zeigt für debuggen

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

In den Entwickler-Tools von Chrom. Ich habe auch die Abfrage innerhalb try/catch, aber ich nicht, was Fehler oder was ist das Problem in meiner Abfrage, weil es mir nicht genügend Informationen gibt, um zu sagen, das Problem hat.

Alles, was über die $stmt = $con->_con->prepare("(SELECT * FROM fvwItems WHERE itemname LIKE :key)", array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL)); nicht entweder Fehler angezeigt oder nicht

Was könnte der beste Weg, um zu überprüfen, was mit der Abfrage falsch ist?

UPDATE

Meine Verbindung ist wie folgt:

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

Ich dachte, ich brauche es new PDO so sein, dass es laufen wird?

Wie

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

Resultierende in

PDO Object 
(
) 

Aber das ist nicht anschließen und es wird immer Fehler

+0

Sie uns nicht sagen, was '$ Con- > _con' ist, hat es tatsächlich eine 'prepare()' Methode? Hast du PHP so konfiguriert, dass es [sinnvolle Fehlermeldungen anzeigt] (https://stackoverflow.com/q/845021/1255289)? – miken32

+0

Waren einige der bereitgestellten Antworten hilfreich? Sie sollten ** alle Antworten aufwerten, die hilfreich waren, und ** akzeptieren ** die eine Antwort, die am besten Ihre Frage beantwortet. Dies wird die Frage als "geschlossen" markieren und Ihnen auf der Website einen guten Ruf verschaffen. Weitere Informationen finden Sie unter https://stackoverflow.com/help/someone-answers. – miken32

Antwort

0

Nach der Erstellung PDO Objekt setzen Sie diese Option:

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

Ihre Code oben ist unklar, aber es sieht aus wie Sie ein Verbindungsobjekt mit sqlsrv_connect() erstellen und dann versuchen, es wie ein PDO-Objekt zu behandeln. Offensichtlich wird das nicht funktionieren.

Jetzt im wirklichen Leben Sie eine wesentlich flexiblere und nützliche Methode haben werden Fehler zu fangen, aber die Grundlagen zeigen:

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(); 
}