Я использую драйвер sqlsrv для IIS, чтобы я мог подключиться к серверу MS SQL на PHP.
Мне удалось преобразовать большую часть моего исходного кода mysql_ и все шло хорошо, пока я не попытался ВЫБРАТЬ некоторые поля DateTime из базы данных. Они возвращались как объекты Date в PHP, а не как строки. Я нашел исправление, добавляющее это в массив соединений:
'ReturnDatesAsStrings' => 1
Так как мой код нарушается при заполнении моего набора записей:
function row_read($recordset) {
if (!$recordset) {
die('<br><br>Invalid query :<br><br><bold>' . $this->sql . '</bold><br><br>' . sqlsrv_error());
}
$rs = sqlsrv_fetch_array($recordset);
return $rs;
}
Ошибка: sqlsrv_fetch_array (): 16 не является допустимым ресурсом ss_sqlsrv_stmt
На эту ошибку в Google так мало помощи, так что это мой единственный шанс! Я просто не понимаю.
row_read вызывается изнутри while: while ($ row = $ db-> row_read ($ rs)) {
Есть идеи?
Просто чтобы добавить больше кода и логики - я делаю простой SELECT из всех моих заказов, затем, когда он проходит через них, я делаю еще 2 SELECT в таблице заказов, затем в таблице клиентов. Это падает, когда я пытаюсь получить эти дополнительные 2 'get':
$this->db->sql = "SELECT * FROM TicketOrders";
$rs = $this->db->query($this->db->sql);
$this->htmlList->path("skin/search.bookings");
if ($this->db->row_count != 0) {
while ($row = $this->db->row_read($rs)) {
// Load the order row
$this->TicketOrders->get($this->db, $row['Id']);
// Load the customer row
$this->Customers->get($this->db, $row['CustomerId']);