Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysqli无法获取信息或绑定参数_Php_Mysql_Mysqli_Null_Prepared Statement - Fatal编程技术网

Php Mysqli无法获取信息或绑定参数

Php Mysqli无法获取信息或绑定参数,php,mysql,mysqli,null,prepared-statement,Php,Mysql,Mysqli,Null,Prepared Statement,所以我不确定这里出了什么问题,我尝试了多种方法,但我无法让它工作,我遵循手册,但它似乎没有改变,我有一个简单的login.php,我已经检查了我的查询,但它在mysql上工作,我有错误报告,我怀疑这可能是因为我正在WAMP服务器上测试它,但我不确定这是否有什么关系,请帮忙 编辑 <?php session_start(); ERROR_REPORTING( E_ALL | E_STRICT ); ini_set('display_errors',1);error_reporting(

所以我不确定这里出了什么问题,我尝试了多种方法,但我无法让它工作,我遵循手册,但它似乎没有改变,我有一个简单的login.php,我已经检查了我的查询,但它在mysql上工作,我有错误报告,我怀疑这可能是因为我正在WAMP服务器上测试它,但我不确定这是否有什么关系,请帮忙

编辑

<?php
 session_start();
 ERROR_REPORTING( E_ALL | E_STRICT );
 ini_set('display_errors',1);error_reporting(-1);
 include_once 'UniversalConnect.php';
 class login{

 public function __construct()
 {
 $this->dologin();
 }

 private function dologin()
 {
 $name = $_POST['name'];
 $pass = $_POST['pass'];
 $mysqli = new mysqli("127.0.0.1","root","root","mrt");
 var_dump($mysqli);
 $sql="SELECT * FROM administradores WHERE nombre_administrador= ? AND password= ?";
 $stmt = $mysqli->prepare($sql);
 if ( !$stmt ) {
 printf('errno: %d, error: %s', $mysqli->errno, $mysqli->error);
 die;
 }
 $stmt->bind_param("ss",$name,$pass);
 if ( !$name ) {
 printf('errno: %d, error: %s', $stmt->errno, $stmt->error);
 }
 $stmt->execute();
 $stmt->store_result();
 if($stmt->num_rows==1)
 {
 var_dump($rows);
 header("location: indexSCAF.html");
 else{
 $errmsg_arr[] = 'Username and Password are not found';
 $errflag = true;
 }
 if($errflag) {
 $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
 session_write_close();
 exit();
 }
 }

 }/*close function dologin*/
 }/*close class */
?>

在获取结果之前,需要使用bind_result,以便prepare语句能够正确地获取结果

$mysqli = new mysqli("127.0.0.1","root","root","mrt");
$sql = " SELECT userId,userName From user WHERE nombre_administrador= ? AND password= ? ";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ss",$user,$pass);
$stmt->execute();
$stmt->store_result();

if($stmt->num_rows>0)
 {
   $stmt->bind_result($userId,$userName)
  while($stmt->fetch())
   {
     // success handle result 
      header("location: indexSACF.html");
   }
 }
else
{
  $errmsg_arr[] = 'Username and Password are not found';
  $errflag = true;
}

$stmt->free_result()
$stmt->close();
注意:在查询语句中不要使用select*,因为它不会绑定您的结果。而是使用参数

SELECT userId,userName  From user WHERE nombre_administrador= ? AND password= ? ; 

有关更多信息,请参阅

是否尝试启用mysqli错误报告?对于数据库调用,您没有任何错误处理。将此添加到脚本顶部以使mysqli抛出异常:
mysqli\u报告(mysqli\u报告)。除此之外,您不应该在数据库中存储纯文本密码。相反,你应该对它们进行盐分和散列be
$stmt->bind_参数(“ss”,$name,$pass)?这似乎是最符合逻辑的解释,因为您没有
$user
变量。是的,对不起,我刚刚更改了它,谢谢,但是它仍然抛出所有空值。您的答案将失败。您缺少一段关键的代码……换句话说,
WHERE
SELECT userId,userName  From user WHERE nombre_administrador= ? AND password= ? ;