2013-12-06 3 views
-3

У меня есть этот скриптКак исправить мою ошибку MySQLi/PHP

<?php 
$DB_HOST= "localhost"; 
$DB_NAME = "hhh"; 
$DB_USER = "root"; 
$DB_PASSWORD= ""; 

    $con= mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_NAME) or die("Failed to connect to MySQL");     
     function SignIn() 
     { 
     session_start(); 
      if(!empty($_POST['user'])){ 
      $query = mysqli_query($con,"SELECT * FROM websiteusers WHERE userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysqli_error($con)); //changed 
      $row = mysqli_fetch_array($query) or die(mysqli_error($con)); 
      if(!empty($row['userName']) && !empty($row['pass'])) //changed to a more modern operator 
      { 
      $_SESSION['userName'] = $row['pass']; 
      echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE..."; 

      } 
      else 
      { 
       echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY..."; 
      } 
      } 
     } 
     if(isset($_POST['submit'])) 
     { 
     SignIn(); 
     } 

    ?> 

но продолжает давать мне эту ошибку

"Примечание: Неопределенная переменная мошенника в C: \ XAMPP \ HTDOCS \ test2 \ Вход в систему \ connectivity.php на линии 12

Предупреждение: mysqli_query() ожидает параметр 1, чтобы быть MySQLi, нуль приведены в C: \ XAMPP \ HTDOCS \ test2 \ Вход в систему \ связи. php в строке 12

Примечание: Неопределенная переменная: жулик в C: \ XAMPP \ HTDOCS \ test2 \ Вход в систему \ connectivity.php на линии 12

Предупреждение: mysqli_error() ожидает параметр 1, чтобы быть MySQLi, нуль приведены в C: \ XAMPP \ HTDOCS \ test2 \ Вход в систему \ connectivity.php в строке 12"

Помощь будет aprreciated

+0

Это связано с [переменная сфера] (http://php.net/manual/language.variables.scope.php). Либо определите 'global $ con;' внутри функции, либо используйте другой метод (например, Singleton DB class) – kero

+0

ли вы оставили мое сообщение и как его определить – nathanleachman

+1

Я проголосовал за ваше сообщение. http://stackoverflow.com/help/why-vote Вопрос не очень хорошо поставлен, и сообщение об ошибке должно было дать вам более чем достаточно подсказок для google для проблемы. Однако понижательное голосование - это не конец света, это просто помогает нам контролировать качество. Прочтите FAQ, пожалуйста. – rlemon

ответ

1

Пожалуйста, не объявить его как глобальный. Это плохая идея. Вам нужно передать его в качестве аргумента. Причина, по которой вы не можете видеть $con в своей функции, состоит в том, что функция имеет свою собственную область. Таким образом, вы можете объявить $con чем-то еще внутри. Передача его в качестве аргумента не оставляет никаких вопросов, что вы ссылки

$con= mysqli_connect($DB_HOST,$DB_USER,$DB_PASSWORD,$DB_NAME) or die("Failed to connect to MySQL");     
    function SignIn($con) 
    { 
    session_start(); 
     if(!empty($_POST['user'])){ 
     $query = mysqli_query($con,"SELECT * FROM websiteusers WHERE userName = '$_POST[user]' AND pass = '$_POST[pass]'") or die(mysqli_error($con)); //changed 
     $row = mysqli_fetch_array($query) or die(mysqli_error($con)); 
     if(!empty($row['userName']) && !empty($row['pass'])) //changed to a more modern operator 
     { 
     $_SESSION['userName'] = $row['pass']; 
     echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE..."; 

     } 
     else 
     { 
      echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY..."; 
     } 
     } 
    } 
    if(isset($_POST['submit'])) 
    { 
    SignIn($con); 
    } 
1

Вам необходимо пройти $con в функции, или объявить его как глобальный переменная, потому что она недоступна для просмотра в текущей области.

Чтобы передать его в качестве параметра, выполните следующие действия:

SignIn($con); 

И получить его как

function SignIn($con) 
+0

, пожалуйста, остановите свой пост. – nathanleachman

+0

Я не .. это просто плохой вопрос. –

+0

Его второй вопрос, и я ничего не знаю об этом сайте – nathanleachman

Смежные вопросы