返回空结果时出现php mysql错误

返回空结果时出现php mysql错误,php,mysql,Php,Mysql,我正在使用下面的代码检查密码。当我在表单中输入的用户名在数据库中时,它工作正常。但如果用户名不可用,则foreach将抛出错误 <?php $u=$_REQUEST['loginname']; $P=$_REQUEST['loginpass']; $pas=md5($P); $server="localhost:3306"; $user="root"; $pass="prabhs226"; $database="sugar";

我正在使用下面的代码检查密码。当我在表单中输入的用户名在数据库中时,它工作正常。但如果用户名不可用,则foreach将抛出错误

   <?php 
    $u=$_REQUEST['loginname'];
    $P=$_REQUEST['loginpass'];
    $pas=md5($P);
    $server="localhost:3306";
    $user="root";
    $pass="prabhs226";
    $database="sugar";
    $conn=mysqli_connect($server,$user,$pass);
    mysqli_select_db($conn,$database);
    $sql=("select b_pass from ub_per where b_id='$u' or b_email= '$u';");
    $res = mysqli_query($conn,$sql);

    $row = mysqli_fetch_array($res,MYSQLI_ASSOC);

    foreach($row as $value){
    $value;}

    if($value==$pas){
    echo "password matched";    
    }
    else{echo"not matched";}
    ?>


将值存储在作用域变量上,$value scope在foreach循环中

问题在于,
$value
属性正好放在那里,将其回显或存储在某个地方:

打印它

foreach($row as $value){
    echo $value;  
}  
或存储它

foreach($row as $value){
    $valueStore = $value;  
} 
试试这个

<?php 
    $u=$_REQUEST['loginname'];
    $P=$_REQUEST['loginpass'];
    $pas=md5($P);
    $server="localhost:3306";
    $user="root";
    $pass="prabhs226";
    $database="sugar";
    $conn=mysqli_connect($server,$user,$pass);
    mysqli_select_db($conn,$database);
    $sql=("select b_pass from ub_per where b_id='$u' or b_email= '$u';");
    $res = mysqli_query($conn,$sql);

    if($row = mysqli_fetch_array($res,MYSQLI_ASSOC)) {
        if($row['b_pass'] == $pas){
            echo "password matched";    
        }
        else{
            echo"not matched";
        }
    }
    else{
        echo"not matched";
    }
?>

使用PDO进行即时通讯

<?php    $u=$_REQUEST['loginname'];    
 $P=$_REQUEST['loginpass'];    
 $pas=md5($P);    
 $db = new PDO('mysql:host=localhost;dbname=sugar', 'root' , 'prabhs226');  
 $db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);    
 $stmt=$db->prepare("select b_pass from ub_per where b_id= :id or b_email= :email;");    
 $stmt->bindParam(':id', $id, PDO::PARAM_INT);    
 $stmt->bindParam(':email', $email, PDO::PARAM_STR);    
 $stmt->execute();    
 $row = $stmt->fetch();    
 if($row){    
   $row['b_pass']=$value;    
 }    
 else{     
   echo "invalid user name ";    
 }    
 if($value==$pas){    
   echo "password matched";    
 }    
 else{    
   echo "not matched";    
 }    
?>

我同意卢坦多的看法。另外,如果您想为Complete网站定义一次DB凭据。您可以使用凭据创建一个常量文件,并将其包含到与数据库建立连接的函数文件中。之后,在脚本中包含连接函数。这样,您不必每次需要数据库时都编写脚本来连接。只要把它包括进去,就可以了

范例

constants.php

/**
 * Database Constants - these constants are required
 * in order for there to be a successful connection
 * to the MySQL database. Make sure the information is
 * correct.
 */
define("DB_SERVER", "localhost");
define("DB_USER", "User_db");//enter your database username
define("DB_PASS", 'Pass_db');//databse password
define("DB_NAME", "Name_db");//database name
database.php

/**
 * Database.php
 *
 * The Database class is meant to simplify the task of accessing
 * information from the website's database.
 */
include("constants.php");

try {
    $db = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USER, DB_PASS); //Initiates connection
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Sets error mode
}
catch (PDOException $e) {
    file_put_contents("log/dberror.log", "Date: " . date('M j Y - G:i:s') . " ---- Error: " . $e->getMessage() . PHP_EOL, FILE_APPEND);
    die($e->getMessage()); // Log and display error in the event that there is an issue connecting
}

请记住,这是一个PDO连接,而不是mysqli。这只是一个如何处理常量的示例,以便可以用于整个站点。

此错误仍然存在:::PHP注意:未定义的变量:第23行的E:\noname\name\logged.PHP中的值我这样做了,它解决了我的问题。还有其他方法吗if(!empty($row)){foreach($row作为$value){$value;}}else{echo“输入有效id”;}if(!empty($row)){if($value==$pas){echo“密码匹配”;}else{echo“不匹配”;}`
/**
 * Database.php
 *
 * The Database class is meant to simplify the task of accessing
 * information from the website's database.
 */
include("constants.php");

try {
    $db = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USER, DB_PASS); //Initiates connection
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Sets error mode
}
catch (PDOException $e) {
    file_put_contents("log/dberror.log", "Date: " . date('M j Y - G:i:s') . " ---- Error: " . $e->getMessage() . PHP_EOL, FILE_APPEND);
    die($e->getMessage()); // Log and display error in the event that there is an issue connecting
}