Проблема, с которой я столкнулся, - mysql_num_rows дает мне результат 1 всего кода, но когда я сопоставляю его wil 0 в инструкции if, он возвращает true и выполняет код. так что $ license возвращает ........ вместо его фактического значения.mysql_num_rows в выражении if
Я попытался самостоятельно решить эту проблему.
- Пробовал print_r, чтобы узнать, существуют ли данные. - Да.
- Пробовал повторять лицензию $ в первой части - возвращает правильное значение.
- Пытался проверить значение mysql_num_rows - возвращает 1.
- Matching его с 0 в, если заявление - возвращает истину, когда оно должно быть ложным, так как значение 1.
Любая помощь по этому вопросу?
$check = mysql_query("SELECT * FROM licenses WHERE email='$email'") or die(mysql_error
());
if (mysql_num_rows($check) > 0)
{
while ($data = mysql_fetch_array($check))
{
print_r($data); // for test
$name = $data['name'];
$license = $data['pid'];
echo $license; // test print 1
$comments = $data['comments'];
}
if ($license == "Sgsmorgan")
$license = "EWP Discounted Basic (Simpleleveraging)";
}
$count = mysql_num_rows($check); // for test
echo $count; // returns 1.
if (mysql_num_rows($check) == 0)
$name = "";
$license = "...........";
echo $license;// test print 2
$comments = "Email doesnt exist in the database";
расширение MySQL устарел и на пути к устареванию. Новый код должен использовать mysqli или PDO, оба из которых имеют важные преимущества, такие как поддержка подготовленных операторов. Кстати, пример кода потенциально уязвим для [SQL injection] (http://unixwiz.net/techtips/sql-injection.html). Параметрируйте утверждение, чтобы закрыть вульверность. – outis
Не используйте ['SELECT *'] (http://stackoverflow.com/questions/321299/), если вы не пишете программу администрирования БД; выберите только нужные столбцы. – outis
Для удобства чтения, пожалуйста, выберите и примените стиль [отступ] (http://en.wikipedia.org/wiki/Indent_style). – outis