如何在其他php文档

时间:2016-03-23 20:20:23

标签: php mysql mysqli

帮我解释一下这段代码:我收到了这个错误。

注意:未定义的变量:第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ general.php中的dbCon

警告:mysqli_real_escape_string()要求参数1为mysqli,在第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ general.php中给出null

注意:未定义的变量:第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中的dbCon

警告:mysqli_query()要求参数1为mysqli,在第5行的C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中给出null

致命错误:未捕获错误:在C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中调用未定义函数mysqli_result():8堆栈跟踪:#0 C:\ xampp \ htdocs \ Project \ login .php(4):user_exists(NULL)#8 {main}在第8行的C:\ xampp \ htdocs \ Project \ core \ functions \ Users.php中抛出

主文件夹(名称 - > PHP)有 Index.php

    <?php 
include 'core/init.php';
include 'includes/overall/header.php';
?>

PHP文件夹有 Login.php

 <?php
include 'core/init.php';

if(user_exists('sudin') === true)
{
    echo 'exists';
}
?>

在php / core文件夹 init.php:

<?php
session_start();

require 'database/connect.php';
require 'functions/general.php';
require 'functions/users.php';
?>

在php / core / database connect.php:

<?php
$dbCon=mysqli_connect('localhost','root','','project_point');

?>

在php / core / functions Users.php:

<?php
function user_exists($username)
{
    $username = sanitize($username);
    $query = mysqli_query($dbCon,"SELECT COUNT('Login_ID')FROM 'login' WHERE 'Username' = '$username'");
    return(mysqli_result($query,0)==1) ? true : false;
}
 ?>

在php / core / functions general.php:

<?php

function sanitize($data)
{
    return mysqli_real_escape_string($dbCon,$data);
}
?>[enter image description here][1]

对于凌乱的方式抱歉,这是树视图:

感谢您的帮助

4 个答案:

答案 0 :(得分:2)

这里有一些问题。

首先,您有一个可变范围问题,并且您在查询中使用错误的identifier qualifiers作为常规报价:

所以,删除引号:

SELECT COUNT('Login_ID')FROM 'login' WHERE 'Username'
             ^        ^      ^     ^       ^        ^ Remove those

或使用刻度:

SELECT COUNT(`Login_ID`) FROM `login` WHERE `Username`

使用mysqli_error($dbCon) http://php.net/manual/en/mysqli.error.php检查错误,一旦它被解雇,就会抛出一些关于它的信息。

user_exists()功能

中建立全局连接
global $dbCon;

阅读两者:

答案 1 :(得分:0)

连接变量未在函数范围中定义。修复程序是使用“全局”构造添加它。

function user_exists($username)
{
global $dbCon;
...

答案 2 :(得分:0)

您正在尝试在函数user_exists中使用局部变量$ dbCon。

您可以将该变量更改为全局

例如:

在php / core / database connect.php下:

<?php
global $dbCon;
$dbCon=mysqli_connect('localhost','root','','project_point');

?>

在php / core / functions Users.php下:

<?php
function user_exists($username)
{
    global $dbCon;
    $username = sanitize($username);
    $query = mysqli_query($dbCon,"SELECT COUNT('Login_ID')FROM 'login' WHERE 'Username' = '$username'");
    return(mysqli_result($query,0)==1) ? true : false;
}
 ?>

答案 3 :(得分:0)

问题是$dbCon未在任何函数的范围内定义。 你可以做三件事:

function user_exists($username){
  $query = mysqli_query($GLOBALS['dbCon'] ... 

function user_exists($username){
  global $dbCon;
  $query = mysqli_query($dbCon ...

但是,在像这样的函数中使用全局变量通常是一种糟糕的编码风格。 我建议做类似以下的事情:

function getconn(){
  static $conn;
  if(!isset($conn)){
    $conn = new mysqli_connect(...);
  } 

  return $conn;
}

function user_exists($username){
  $query = mysqli_query(getconn() ... 

我正准备添加SQL语法的问题,但Fred打败了我。我认为你想要反叛,而不是'