Próbuję wycofać dane z MS SQL za pośrednictwem strony php. Mam poprawne połączenie i próbuję proste SELECT * FROM MyTable, ale sqlsrv_num_rows jest po prostu puste, bez względu na to, co robię!Nie otrzymuję niczego z powrotem z sqlsrv_num_rows
Oto mój kod:
function connect() {
$serverName = DB_HOST; //serverName\instanceName
$connectionInfo = array("Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD);
$this->connection = sqlsrv_connect($serverName, $connectionInfo);
sqlsrv_connect($serverName, $connectionInfo);
if($this->connection) {
echo "<br>Connection established.<br />";
}else{
echo "<br>Connection could not be established.<br />";
die(print_r(sqlsrv_errors(), true));
}
}
Echo za połączenie, które pracuje tak wszystko AOK tam!
Teraz kiedy zrobić proste zapytanie:
function query($sql) {
if ($this->debug) {
echo $sql . "<br />";
}
$this->sql = $sql;
$this->recordset = sqlsrv_query($this->connection, $sql);
if (!$this->recordset) {
die('<br><br>Invalid query :<br><br><bold>' . $this->sql . '</bold><br><br>' . sqlsrv_errors());
}
echo "<br>rows = " . sqlsrv_num_rows($this->recordset);
mam absolutnie nic z powyższego echa? Jakiś powód, dlaczego? Czy możesz zasugerować nowe echo, czy mogę spróbować to debugować?
Cały mój kod w mojej klasie DB jest konwertowany z mysql, więc może być kilka błędów, które powodują obrażenia!
Mam nawet próbował super prostą wersję, cały kod razem i nadal jest pusty/fałsz:
$server = DB_HOST;
$conn = sqlsrv_connect($server, array("Database"=>DB_NAME, "UID"=>DB_USER, "PWD"=>DB_PASSWORD));
$stmt = sqlsrv_query($conn, "SELECT * FROM MyTable");
$row_count = sqlsrv_num_rows($stmt);
echo "<br>row count = " . $row_count;
if ($row_count === false)
echo "\nerror\n";
else if ($row_count >=0)
echo "\n$row_count\n";
die;
widzimy zawartość $ sql? –
Niestety, naprawiłem to teraz, potrzebuje $ opcji dodawania do zapytania: Znalazłem odpowiedź natychmiast po wysłaniu! Potrzebujesz tego w zapytaniu: $ this-> sql = $ sql; \t \t $ params = array(); \t \t $ options = array ("Przewijany" => SQLSRV_CURSOR_KEYSET); \t $ this-> recordset = sqlsrv_query ($ this-> connection, $ sql, $ params, $ options); „SQLSRV_CURSOR_KEYSET \t Umożliwia dostęp do wierszy w dowolnej kolejności. Jednak kursor zestaw kluczy nie aktualizuje liczyć wiersz jeśli wiersz zostanie usunięty z tabeli (usunięty wiersz jest zwracany bez wartości). zestaw kluczy jest skróconą formą SQLSRV_CURSOR_KEYSET. " –
zapraszam do zamieszczenia własnej odpowiedzi ;-) – VolkerK