Neden bu SQL sorgusu Uyarılar atıyor?

6 Cevap php

Possible Duplicate:
mysql_num_rows(): supplied argument is not a valid MySQL result resource

            $resultnx = mysql_query("SELECT * FROM `emails` WHERE `email` = '{$email}'");
        $num_rows = mysql_num_rows($resultnx);

mysql_num_rows (): Bu uyarı Uyarı alır verilen argüman geçerli MySQL result resource değildir ....

6 Cevap

Bazı hata sorguda var gibi görünüyor, die ne hata görmek için kullanabilirsiniz:

 $query = "SELECT * FROM `emails` WHERE `email` = '{$email}'";
 $resultnx = mysql_query($query) or die(mysql_error());
 $num_rows = mysql_num_rows($resultnx);

Ayrıca, Emin $email iyi geliyor olduğundan emin olmak için kontrol edin:

var_dump($email);

Ya da deneyin

 $query = "SELECT * FROM `emails` WHERE `email` = '".$email."'";
 $resultnx = mysql_query($query) or die(mysql_error());
 $num_rows = mysql_num_rows($resultnx);

$query içeriğini çıkış ve daha sonra bazı sorgu yürütme aracı yapıştırarak deneyin.

Bu doğrudan cevap vermez, ama çiftleri kontrol etmek muhtemelen daha iyi yolları vardır. Benzersiz olması için e-mail alanını değiştirerek düşünün. MySQL komut satırından (veya PHPMyAdmin) aşağıdakileri yapın:

ALTER TABLE `emails` ADD UNIQUE(`email`);

Eğer e-posta zaten var olan bir satır eklemek için çalışırsanız Şimdi kendi hepiniz için bir hata atmak olacaktır.

Doğrudan aldığınız hata

MySQL server has gone away

kesinlikle MySql sunucu aşağı olmak neden olur. MySQL Sunucu ve PHP komut dosyası aynı VPS üzerinde ise, o zaman veritabanı (çökme) kapatmaya neden olduğunu tam olarak ne avlamak için ihtiyacımız olacak. Sunucu hatası günlüklerini denetleyin. Onlar sorunun ne olduğunu söylemek gerekir.


Bunun yerine sorgu yazdım yol yerine, neden sadece yerine aşağıdaki sorgu yapmayın:

$query = "SELECT count(*) FROM `emails` WHERE `email` = '".$email."'";

Bu şekilde sadece (özellikle email endeksli) MySQL üzerine biraz daha hızlı çalışır satır sayısını ziyade tüm verileri çekebilirsiniz.

$query = "SELECT count(*) FROM `emails` WHERE `email` = '".$email."'";
$resultnx = mysql_query($query) or die(mysql_error());
$num_rows_array = mysql_fetch_array($resultnx);
$num_rows = $num_rows_array[0];

Kodda Lines birleştirilebilir. Onlar daha kolay meydana ne görmek yapmak için ayrıldı.

Ben $ e-posta küme parantezi kaldırmak gerekir düşünüyorum.

$query = "SELECT * FROM `emails` WHERE email = '$email'";
$resultnx = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($resultnx);