【问题标题】:I can't run my PHP program and I received several errors我无法运行我的 PHP 程序并且收到了几个错误
【发布时间】:2016-09-11 17:54:18
【问题描述】:

这是我收到的警告图片

我是新手,我很想学习 PHP。

<?php
	include 'mysql.conf.php';

	if(isset($_POST['submit']))
	{
		if(!empty($_POST['user']) && !empty($_POST['password']))
		{
			$user = $_POST['user'];
			$password = $_POST['password'];
			$select = "SELECT * FROM admin where user=$user && password=$password";
			$sql=mysql_query($select) or die(mysql_error());
			if($sql)
			{
				echo "Login";
			}
			else
			{
				echo "Cannot Login";
			}
		}
	}

?> 

下面是我的 mysql.conf.php 代码

<?php
	$name = "localhost";
	$user = "root";
	$pass = "gasamul";

	$connect = mysql_connect($name, $user, $pass) or die(mysql_error());

	$db = "portfolio";
	if($connect)
	{
		$db = mysql_select_db($db) or die(mysql_error());
		if($db)
		{
			//echo 'Database Connect';
		}
	}
	else
	{
		echo 'Database can\'t connect';
	}
?>

我的数据库名称是投资组合。我还将我的表命名为 admin。

【问题讨论】:

  • 我认为错误太清楚了,它甚至说明了解决方案。顺便说一句,您的查询应该是SELECT * FROM admin where user='$user' &amp;&amp; password='$password'。将变量绑定到查询时使用记号 (')。
  • 哦,至少使用*_real_escape_strings 提交您提交的 POST 数据。 $user = mysql_real_escape_string($_POST['user']);
  • 您使用了 mysql_*() 无法工作的更新 php 版本,请更新您的代码并使用 mysqli_()

标签: php mysql html web phpmyadmin


【解决方案1】:

由于错误表明mysql_* 扩展名已经是deprecated,因此建议您使用mysqli_*PDO 扩展名。

让我们尝试第一个选项 - mysqli_*。我们首先在mysql.conf.php 中建立与您的数据库的连接:

$connect = new mysqli("localhost", "root", "gasamul", "portfolio");

/* CHECK CONNECTION */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

然后,我们可以继续logintest.php

include 'mysql.conf.php';

if(isset($_POST['submit']) && !empty($_POST['user']) && !empty($_POST['password']))
{

    if($stmt = $con->prepare("SELECT * FROM admin WHERE user = ? AND password = ?")){ /* PREPARE YOUR QUERY  */
        $stmt->bind_param("ss", $_POST['user'], $_POST['password']); /* BIND THESE TWO VARIABLES TO THE QUERY ABOVE RESPECTIVELY; s STANDS FOR strings */
        $stmt->execute(); /* EXECUTE THE QUERY */
        $stmt->store_result(); /* STORE THE RESULT */
        $noofrows = $stmt->num_rows; /* GET THE NUMBER OF RESULT */
        if($noofrows > 0){ /* CHECK IF RESULT IS MORE THAN 0 */
            echo "Login";
        } else {
            echo "Cannot Login";
        }
        $stmt->close(); /* CLOSE THE PREPARED STATEMENT */
    }

}

您还可以查看password_hash() 以保护您在数据库中的密码。

【讨论】:

    猜你喜欢
    • 2021-06-15
    • 1970-01-01
    • 2021-10-22
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2018-06-23
    • 2020-07-09
    相关资源
    最近更新 更多