Veritabanı Sorunları

Bu bölümde PHP ile veritabanları arasındaki ilişkiye yönelik sıkça sorulan sorulara yer verilmiştir. Evet, PHP, günümüzde kullanılabilen her veritabanına sanal olarak erişebilmektedir.

PHP'den Microsoft SQL Sunucusuna erişimin mümkün olduğunu duydum. Nasıl?

Unix makinelerde PDO_ODBC veya Unified ODBC API. kullanabilirsiniz.

Windows makinelerde, ayrıca PDO_SQLSRV veya SQLSRV de kullanabilirsiniz.

Ayrıca bir sonraki sorunun cevabına da bakınız.

Microsoft Access veritabanlarına erişebilir miyim?

Bir Unix üzerindeyseniz ve bir Windows makinedeki bir Microsoft Access veritabanına erişmek istiyorsanız Unix ODBC sürücüleri kullanmanız gerekir. » OpenLink Software, bunu yapabilen Unix temelli ODBC sürücülerine sahiptir.

Diğer bir seçenek, Windows ODBC sürücülerine sahip bir SQL sunucusu kullanmaktır. Böylece Microsoft Access (ODBC kullanarak) ve PHP'ye (yerleşik sürücüleri kullanarak) erişebilirsiniz. Başka bir seçenek ise, Microsoft Access ve PHP'nin her ikisinin de anlayabileceği düz dosyalar veya dBase veritabanları gibi bir aracı dosya biçimlerini kullanmaktır. Bu noktada OpenLink yazılımdan Tim Hayes'in yazdıklarını okuyalım:

Veritabanınıza PHP'den ODBC'yle (yani, OpenLink'in sürücüleriyle) doğrudan erişmek varken aracı dosya olarak başka bir veritabanını kullanmak hiç iyi bir fikir değildir. Mutlaka bir aracı dosya kullanmanız gerekmiyorsa, OpenLink'in NT, Linux ve diğer Unix platformları için dağıttığı Virtuoso'yu (sanal veritabanı motoru) kullanabilirsiniz. Yazılımı özgürce indirmek için » OpenLink'i ziyaret ediniz.

Başarısı kanıtlanmış tek seçenek Windows üzerinde MySQL ile MyODBC sürücülerini kullanmak ve veritabanlarını eşzamanlamaktır. Steve Lawrence şunları yazmıştır:

  • MySQL'i platformunuza talimatlara uygun olarak kurun. En son sürümü » http://www.mysql.com/ adresinden edinebilirsiniz. Bir veritabanı oluşturmak dışında özel bir yapılandırma gerekli değildir. Kullanıcı hesabını yapılandırdıktan sonra host alanına bir % imi veya MySQL ile erişmek istediğiniz Windows makinenizin konak adını yazın. Sunucu ismini, kullanıcı ismi ve parolanızı bir kenara yazmayı unutmayın.
  • Windows için MyODBC sürücüsünü MySQL sitesinden indirin ve Windows makinenize kurun. İşlemi bu programla gelen araçlarla deneyebilirsiniz.
  • Denetim Masası'ndan (veya Yönetimsel Araçlar'dan) ODBC Yöneticisini açıp bir kullanıcı veya bir sistem dsn oluşturun. MySQL veritabanını 1. adımda oluştururken kullandığınız dsn adını, konak adını, kullanıcı adı ve parolasını yazın.
  • Install Access'i tam kurulum seçeneği ile kurun. Bu, doğru eklentilerin kurulduğundan emin olmanızı sağlar; en azından ODBC desteğine ve ilintili tablo yöneticisine ihtiyacınız olacak.
  • En eğlenceli kısma geldik! Yeni bir Access veritabanı oluşturun. Tablo penceresine sağ tıklayıp Link Tables seçeneğini veya dosya menüsü seçeneği altından Get External Data ve ardından Link Tables seçeneğini seçin. Dosya tarayıcı penceresi geldiğinde ODBC türündeki dosyaları seçin. Sistem dsn'sini ve 3. adımda oluşturduğunuz kendi dsn isminizi seçin. İlintilenecek tabloyu seçtikten sonra Tamam'a tıklayın. Hepsi bu kadar! Artık, MySQL sunucunuzdan tabloyu açabilir ve veri ekleme, silme ve düzenleme işlemlerini yapabilirsiniz. Ayrıca sorgular oluşturabilir, MySQL'le tablo ithalatı ve ihracatı yapabilir, formlar ve raporlar, vs. oluşturabilirsiniz.

İpuçları:

  • Tablolarınızı Access'te oluşturabilir, bunları MySQL'e ihraç edebilir ve onları gerisin geriye ilintileyebilirsiniz. Bu işlem, tablo oluşturmayı hızlandırır.
  • Tablolarınızı Access'te oluştururken, yazma erişimine sahip olmak için bir birincil anahtar oluşturmalısınız. Tabloyu ilintilemeden önce MySQL'de de bir birincil anahtar oluşturmayı unutmayın.
  • MySQL'deki bir tabloda değişiklik yaparsanız, Access'teki ile yeniden ilintilemelisiniz. Araçlar>eklenti>ilintili tablo yöneticisi'ne gidin, ODBC DSN'nize geçin ve tabloyu seçip yeniden ilintileyin. İsterseniz, dsn kaynağınızı oradan taşıyabilirsiniz, yapacağınız tek şey Tamam'a tıklamadan önce yeni konum için daima istek yap onay kutusunu işaretlemek olacaktır.

add a note add a note

User Contributed Notes 2 notes

up
11
knb at gfz-potsdam dot de
19 years ago
This is a crucial piece of information for SYBASE users:

If you are using the free, but old, 11.x client libs from sybase,
then compile with option  "--with-sybase-ct=$SYBASE"
substitute $SYBASE with the appropriate directory name.

option --with-sybase (without ct) can somehow be used to talk to old MS-SQL servers, but only with the 11.x client libs.

If you are using free, or have legally obtained, 12.x client libs from sybase, then compile with option  "--with-sybase-ct=$SYBASE/$SYBASE_OCS"
substitute $SYBASE/$SYBASE_OCS with the appropriate directory name.
up
-3
doug at unlikelysource dot com
6 years ago
To enable SQL Server access from ubuntu 16.04:

* Run these commands:
```
sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > mssql-release.list
sudo mv mssql-release.list /etc/apt/sources.list.d
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql unixodbc-dev
sudo apt-get install php7.1-dev
sudo apt-get install autoconf
sudo pecl install pdo_sqlsrv-4.1.6.1
```

*  Confirm ODBC driver installation:
```
odbcinst -q -d -n "ODBC Driver 13 for SQL Server"
```

* Update the php.ini file: run` php --ini` to find the path to your php.ini file
* Add this line to /path/to/php.ini
```
extension=pdo_sqlsrv.so
```
* Run `php -i` to confirm SQLSRV support was added
* NOTE: extensions (on my computer) were installed here:
`/usr/local/lib/php/extensions/no-debug-non-zts-20160303/`

* Test user access directly on the Windows server running MSSQL:
```
sqlcmd -S ip_address -U username -P password -d database -q "select * from table_name"
```
* On the Windows server: open port 1433 in your firewall

* Install the FreeTds utils to test the connection:
```
sudo apt-get install freetds-bin
tsql -H mssql.host.ip.address -U username -P password -D database -p 1433
```

* Formulate the correct DSN (Data Source Name):
    See: http://php.net/manual/en/ref.pdo-sqlsrv.connection.php

* Sample PHP Code:
```
<?php
// Database params
$tcp  = '192.168.3.126';
$port = 1433;
$user = "test";
$password = "Password123";
$database = "test";

// Open connection
try {
   
// Database connect -- use one of the two statements below
   
$dsn 'sqlsrv:Server=tcp:' . $tcp . ',' . $port . ';Database=' . $database;
   
$dbh = new PDO( $dsn, $user, $password, array());
   
// SQL prepare
   
$sql = "SELECT * FROM prospects";
   
$sth = $dbh->prepare($sql);
   
// Execute
   
$sth->execute();
   
// Fetch results
   
$row = $sth->fetch(PDO::FETCH_ASSOC);
    if (
$row) {
       
$output = '<pre>';
       
$output .= implode("\t", array_keys($row)) . PHP_EOL;
       
$output .= implode("\t", $row) . PHP_EOL;
        while (
$row = $sth->fetch(PDO::FETCH_NUM)) {
           
$output .= implode("\t", $row) . PHP_EOL;
        }
    }
} catch (
PDOException $e) {
   
$output .= $e->getMessage();
}
$output .= '</pre>';
echo
$output;
```
To Top