Member 13299675 Ответов: 3

Ошибка Mysqli_num_rows в php. Пожалуйста помочь


я написал php-код для своего проекта коллажа. я использовал функцию mysqli_num_rows() php/mysql и получил эту ошибку:mysqli_num_rows() ожидает параметр 1, чтобы быть mysqli_result логическое приведены в

вот весь мой код:
<pre><?php require_once('inc/top.php');?>
 </head>
 <body>
 <!--navbae-->
		<?php require_once('inc/nav.php');?>
<!--End navbar-->
<div class="container-fluid">
	<div class="row">
		<?php require_once('inc/sidebar.php');?><!--end sidebar-->
		<div class="col-md-9">
			<h1> Add Users <small>Add New Users Profile</small></h1><hr>
			<ol class="breadcrumb">
              <li><a href="index.php"> Dashbord</a></li>
			  <li class="active"> Add Users</li>
			</ol>
			<?php
                if(isset($_POST['submit'])){
                    $name = mysqli_real_escape_string($cn, $_POST['name']);
                    $username = mysqli_real_escape_string($cn, $_POST['user-name']);
                    $username_trim = preg_replace('/\s+/','',$username);
                    $email = mysqli_real_escape_string($cn,$_POST['email']);
                    $password = mysqli_real_escape_string($cn,$_POST['password']);
                    $role = $_POST['role'];
                    $image = $_FILES['image']['name'];
                    $image_tmp = $_FILES['image']['tmp_name'];
                  //  $check_query = "SELECT * FROM user WHERE user_name = '$username' or email = '$email'";
                    $check_run = mysqli_query($cn,"SELECT * FROM `user` WHERE `user_name` = '$username' or `email` = '$email'");
                    if(empty($name) or empty($username) or empty($email) or empty($password) or empty($image)){
                        $error = "ALL (*) FEILDS ARE REQUIRED";
                    }
                    else if($username != $username_trim)
                    {
                        $error = "Don't use spaces in Username";
                    }
                    else if(mysqli_num_rows($check_run)>0)
                    {
                        $error = "Username or email allready Exists";
                    }
                    else
                    {
                        $msg = "Success";
                    }
                }
            ?>
			<div class="row">
			    <div class="col-md-8">
                        <form action="" method="post" enctype="multipart/form-data">
                        <div class="form-group">
                            <label for="name">Name:*</label>
                            <?php
                                if(isset($error)){
                                    echo "<span class='pull-right' style='color:red;'>$error</span>";
                                }
                            ?>
                            <input type="text" name="name" id="name" class="form-control" placeholder="Name">
                        </div>
                        <div class="form-group">
                            <label for="user_name">User Name:*</label>
                            <input type="text" name="user-name" id="user-name" class="form-control" placeholder="User Name">
                        </div>
                        <div class="form-group">
                            <label for="email">E-mail:*</label>
                            <input type="text" name="email" id="email" class="form-control" placeholder="E-mail">
                        </div>
                        <div class="form-group">
                            <label for="password">Password:*</label>
                            <input type="password" name="password" id="password" class="form-control" placeholder="Password">
                        </div>
                        <div class="form-group">
                            <label for="role">Role:*</label>
                            <select name="role" id="role" class="form-control">
                                <option value="author">Author</option>
                                <option value="admin">Admin</option>
                            </select>
                        </div>
                        <div class="form-group">
                            <label for="profile">Profile Picture:*</label>
                            <input type="file" name="image" id="image">
                        </div>
                        <input type="submit" value="Add user" name="submit" class="btn btn-primary">
                        </form>
			    </div>
			    <div class="col-md-4"></div>
			</div>
		</div>
	</div>
</div>
<?php require_once('inc/footer.php');?>


я надеюсь, что получу лучшее решение.
заранее спасибо.

Что я уже пробовал:

я бы попробовал какое-нибудь чередование, но оно не работает.

3 Ответов

Рейтинг:
0

Richard MacCutchan

Сначала вам нужно проверить возвращаемое значение из запроса: см. РНР: в mysqli::запрос - руководство по эксплуатации[^] .


Рейтинг:
0

Kistlak

Здесь я использовал MySql. Я просто хочу дать вам идею. Вы должны использовать MySqli с этим ответом, и вы можете успешно запустить свой код.

<?php

error_reporting(E_ALL ^ E_DEPRECATED);

include('DbConnection.php'); 
	if(isset($_POST['submit']))
	{

	    $query = mysql_query("SELECT * FROM user WHERE user_name='$username'");
		
		if(mysql_num_rows($query) > 0 ) //check if there is already an entry for that username
		{ 
		  $error = "Username is already taken , User another Username !!";
		}
			
		else
		{
		  echo " You Can Use This Username "; //you can echo or write a code as you want
		}
	}
	mysql_close();
?>


Рейтинг:
0

Patrice T

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь уязвимости под названием "SQL injection", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользователь вводит имя типа "Брайан О'Коннер", это может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]