Avatar billede gigi1 Nybegynder
28. oktober 2012 - 13:38 Der er 2 kommentarer

PDO til SQLSRV

Hej

Hvordan ændre jeg følgende kode til at virke med følgende API:

Microsoft SQL Server Driver for PHP
http://php.net/manual/en/book.sqlsrv.php



$username = 'test';

try {
  $conn = new PDO('mysql:host=$host;dbname=$database', $username, password);
  $stmt = $conn->prepare('SELECT username users WHERE username = :username LIMIT 1');
  $stmt->execute(array('username' => $username));
 
  if ($stmt->rowCount() > 0) {
  $result = $stmt->fetch);
 
        echo $result['username'];
         
  } else {
    echo 'Brugernavnet blev ikke fundet!';
    die();
  }
} catch(PDOException $e) {
    echo 'ERROR: ' . $e->getMessage();
}



Jeg bruger følgende kode til at forbinde til SQL serveren:


$serverName = "serverName\sqlexpress, 1542"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
    echo "Connection established.<br />";
}else{
    echo "Connection could not be established.<br />";
    die( print_r( sqlsrv_errors(), true));
}
Avatar billede olebole Juniormester
28. oktober 2012 - 18:24 #1
<ole>

Har du tjekket denne og denne side i dokumentationen?

Man skulle tro, du ville få fejl udskrevet, hvis der er nogen. Har du fejlmeddelelser slået til? Under alle omstændigheder kan du prøve at udskrive fejl på passende steder med:

var_dump($db->errorInfo());

/mvh
</bole>
Avatar billede Haven Nybegynder
30. oktober 2012 - 10:34 #2
Din kode til forbindelse, til SQL databasen ser OK ud.
Den kunne evt sættes op som nedenstående istedet.

//Sæt parameterer til databasen
$host = "localhost"; //Som regel localhost
$dbLogin = "sa"; //Dit login til databasen
$dbPassword = "password"; //Din kode til databasen
$database = "databaseNavn"; //Navnet på databasen

//Sæt connectionstring
$conn = sqlsrv_connect($this->host, array("UID" => $dbLogin, "PWD" => $dbPassword, "Database" => $database));

//Test forbindelse, og ved fejl udskriv fejl array
if(!$conn) die( print_r( sqlsrv_errors(), true));


Din query, kunne se sådan ud med SQLSRV:
$username = 'test';

//Der bruges parameterized query, af hensyn til SQL injection
$stmt = "SELECT TOP 1 username FROM [users] WHERE username = ?";
$params[] = $username;

$query = sqlsrv_query($conn, $stmt, $params);

//Hvis query er successfuld, sætter vi $result, til at indeholde resultatet fra query'en
if($query)
    $result = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC);
else
    print_r(sqlsrv_errors()); //Ved fejl, udskriv fejl array

//Tjek, at resultatet ikke er tomt.
if(!empty($result))
    echo $result['username'];
else
    die("Brugernavnet blev ikke fundet");


/Haven
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester