PHP - MySQL tek bir kayıt okumak için basit yolu

9 Cevap php

Bir MySQL veritabanı tek bir kayıt okumak için PHP ile en iyi yolu nedir? Örneğin:

SELECT id FROM games

Ben eski sorulara bir cevap bulmaya çalışıyorum, ama hayır şans vardı.

9 Cevap

$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database_name', $link);
$sql = 'SELECT id FROM games LIMIT 1';
$result = mysql_query($sql, $link) or die(mysql_error());
$row = mysql_fetch_assoc($result);
print_r($row);

ChrisAD cevap eksik birkaç şey vardı. Bu veritabanını seçmek için çok önemlidir MySQL ve aynı zamanda die() deyimi bağlandıktan sonra onlar ortaya çıkarsa hataları görmenizi sağlar.

Aksi takdirde WHERE id=xx veya only bir satır ve daha fazla değil almak için benzer bir şey eklemek gerekir, çünkü veritabanında 1 kayıt varsa sadece çalışır dikkatli olun. Ayrıca sizin gibi $row['id'] sizin id erişebilirsiniz

PDO Böyle bir şey yapabileceğini kullanma:

$db = new PDO('mysql:host=hostname;dbname=dbname', 'username', 'password');

$stmt = $db->query('select id from games where ...');
$id = $stmt->fetchColumn(0);
if ($id !== false) {
    echo $id;
}

Belli ki aynı zamanda PDO::query() (sonucunu kontrol veya yerine istisnalar atmak için PDO anlatarak ya) sorgu OK yürütür olmadığını kontrol etmelisiniz

Eğer bir şeyler yapmak için normal yoludur otomatik artan birincil anahtar kullanıyorsanız varsayarsak, o zaman sizinle veritabanına koymak son satırın anahtar değeri erişebilirsiniz:

$userID = mysqli_insert_id($link);

Aksi takdirde, bu tür e-posta adresi gibi bulmak için çalışıyoruz satırda hakkında daha fazla özelliklerini bilmek gerekir. Tablo yapısını bilmeden, biz daha özel olamaz.

Either way, to limit your SELECT query, use a WHERE statement like this: (Generic Example)

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE something = 'unique'"));
$userID = $getID['userID'];

(Specific example) Or a more specific example:

$getID = mysqli_fetch_assoc(mysqli_query($link, "SELECT userID FROM users WHERE userID = 1"));
$userID = $getID['userID'];

Uyarı! Tüm satırları (hayır fıkra "WHERE 1"! Varsayar NEREDE) ve satır çok sayıda varsa, başvurunuzu yapışmasına seçecektir çünkü SQL, iyi bir fikir değil. (? 1 yapacak zaman 1.000 satırları seçme noktası nedir?) Yani sadece tek bir satır seçerken bunun yerine, size LIMIT ifadesini belirtin emin olun:

$sql = "SELECT id FROM games LIMIT 1";  // Select ONLY one, instead of all
$result = $db->query($sql);
$row = $result->fetch_assoc();
echo 'Game ID: '.$row['id'];

Bu fark bu kadar tablo önemli veya bir WHERE yan tümcesi kullanmak gerektiğini sipariş, ilk eşleşen kaydı only seçmek için MySQL gerektirir. Ancak, her kayıt ve çıkış satır sayısını bir tane daha, bir sürü daha az bellek ve bir kaydı bulmak için zamanı geldi.

Gerçekten kolay kullanımlı arayüzü yerli SQL yöntemleri sarar ezSQL database library, felsefesi gibi.

Veritabanından tek bir değer alma Önemsiz:

  $id = $db->get_var("SELECT id FROM games WHERE ...");

Ayrıca kolay tek bir satır, sütun veya satır kümesi almak için yapar.

'En iyi şekilde' kenara PHP ile veritabanından tek bir kayıt alınmasıyla bazı olağan yolları gibi go:

with mysqli

$sql = "SELECT id, name, producer FROM games WHERE user_id = 1";
$result = $db->query($sql);
$row = $result->fetch_row();

with Zend Framework

/ / Tablo sınıfının içinde

$select = $this->select()->where('user_id = ?', 1);  
$row = $this->fetchRow($select);

I mysql_result, bir MySQL sonuç kümesinden bir hücrenin içeriğini almak için kolay bir yol olduğunu kabul. Tiny kodu:

$r = mysql_query('SELECT id FROM table') or die(mysql_error());
if (mysql_num_rows($r) > 0) {
    echo mysql_result($r); // will output first ID
    echo mysql_result($r, 1); // will ouput second ID
}

Öncelikle size veritabanına bağlanın. Sonra sorgu dizesi oluşturmak. Sonra sorguyu başlatmak ve sonucu depolamak, ve nihayet getirme yöntemlerden birini kullanarak sonuçtan istediğinizi satırları getir.

$link = mysql_connect('localhost','root','yourPassword')
mysql_select_db('database',$link);
$sql = 'SELECT id FROM games'
$result = mysql_query($sql,$link);

$singleRow = mysql_fetch_array($result) 
echo $singleRow;

Edit: Çok üzgünüm, veritabanı bağlantısı unuttum. Şimdi ekledim

Say that you want to count the rows in an existing table:

Use mysql_result with only one parameter set to "0"

Like this:

$string = mysql_result(
          mysql_query("SELECT COUNT(*) FROM database_name.table_name ")
,0);

ps.put (`) veritabanı_adı ve Tablo_ismi çevresinde

var_dump ($ string); masaya sadece 5 kayıtları vardır (1) "5" / / eğer /> / / string />

Not: Eğer gibi başka bir şey için sorgulamak

Veritabanı.tablo LİMİT 1 SELECT * FROM

ve tablo o zaman sadece ilk sütunu alacaksınız var_dump bir array() olsun OLMAYACAK birden fazla sütunu