2013-07-11 2 views
-2

Я хочу вставить значения в usertable в базе данных, и если почта уже существует, я не хочу, чтобы данные вводились в базу данных, а также возвращали ошибку на стороне клиента. но мой код вставляет значения в таблицу, даже если почта уже существует.mysql_num_rows() предоставленный аргумент не является допустимым ресурсом результата mysql в php

Мой код

<?php 
$con=mysqli_connect("localhost","username","password","databasename"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$result = mysqli_query($con,"SELECT * FROM usertable WHERE useremail='[email protected]'"); 

$number_of_rows = mysql_num_rows($result); 

if ($number_of_rows > 0) 
{ 
    die('This email already exists in the database'); 
} 
else 
{ 
    $sql="INSERT INTO usertable(username, useremail, usertype) VALUES ('newname', '[email protected]', 'usertypeval')"; 


    if (!mysqli_query($con,$sql)) 
    { 
     die('Error: ' . mysqli_error($con)); 
    } 
    echo "1 record added"; 
} 
mysqli_close($con); 
?> 

Ошибка:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/applicat/public_html/stampede/new.php on line 14 

Запись добавляется в базу данных каждый раз. Что я делаю неправильно здесь. Пожалуйста помоги.

+1

Вместо mysql_num_rows, используйте mysqli_num_rows –

ответ

3

Вы должны использовать mysqli_num_rows, если вы используете mysqli_* функции

$number_of_rows = mysqli_num_rows($result); 
+0

Это верно, но это также хорошая практика, чтобы проверить, чтобы убедиться, что возвращается из mysqli_query (! == false). По документации он вернет false, если что-то пойдет не так. Поэтому вы всегда должны проверять и никогда не предполагать. –

+1

Большое вам спасибо. –

+0

Можете ли вы, пожалуйста, сделать еще одну услугу? Как я могу показать эту ошибку (т. Е. Почта уже существует) на странице html на стороне клиента? –