如何使用php代码将数据库表中的值获取到数组中?
我是编程领域的初学者 我的想法是,在检查用户id和密码后,从登录页面移动到主页。我有一个数据库表,其中包含“user_id”和“password”字段。因此,我想从表中获取数据到数组,然后将其与用户输入的值进行比较……如何以最简单的方式实现这一点?我一直使用如何使用php代码将数据库表中的值获取到数组中?,php,mysql,Php,Mysql,我是编程领域的初学者 我的想法是,在检查用户id和密码后,从登录页面移动到主页。我有一个数据库表,其中包含“user_id”和“password”字段。因此,我想从表中获取数据到数组,然后将其与用户输入的值进行比较……如何以最简单的方式实现这一点?我一直使用 $query = "..."; $sql = mysql_query($query); while($row = mysql_fetch_assoc($sql)) { $user_id = $row['user_id'];
$query = "...";
$sql = mysql_query($query);
while($row = mysql_fetch_assoc($sql)) {
$user_id = $row['user_id'];
// ...
}
我认为,当您获得一个关联数组时,这应该会更好,这样您就可以使用字段名了。
请注意,如果选择SUM*,则必须放入$row['SUM*”]或通过SQL为其命名。尽管您的研究很少,而且您的问题相当广泛,但我将向您展示一个可能会给您一些线索的示例
$username = mysql_real_escape_string($_POST['username']); //escaping the string, will use it in a query
$password = $_POST['password'];
$result = mysql_query("SELECT password FROM users WHERE username = '$username'");
if (mysql_num_rows($result) == 1) { // Expecting one result
$userdata = mysql_fetch_array($result);
if ($password == $userdata['password']) {
// USER IS AUTHORISED
} else {
// USER IS NOT AUTHORISED
}
}
这是一个简单的例子
需要考虑的事项:
虽然我在上面的例子中这样做是为了简化事情,但不要将密码作为明文存储在数据库中,而是存储一个散列。您可以使用md5string来生成散列。如果你需要帮助,开始另一个问题。
授权用户后,您可以通过使用PHP会话记住这一点。同样,如果你需要帮助,问另一个问题。
试试这个
//HTML
<form method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="submit" name="login" value="login"/>
</form>
您可以通过使用mysql\u fech\u数组来实现这一点。了解如何使用if语句,然后了解如何从mysql获取数据,您已经了解了重定向,然后将其放在一起。$sql=从用户详细信息中选择用户id、密码$结果=mysql\u查询$sql,$con;如果$结果{die'Error:'.mysql\u Error;}$row=mysql\u fetch\u array$result,mysql\u两者;我的代码是这样的。。然后我想将“行”中的内容与输入的文本字段进行比较。。我如何得到所有的值来与使用for循环进行比较。。。?是否可以检查为第[0]行第[1]行等…您的代码中有一些错误。在HTML中,您的值缺少引号。在PHP中,未设置$\u POST['submit'],mysql\u real\u escape\u字符串应为mysql\u real\u escape\u字符串,您需要在查询中将变量放在单引号中,如username='$username'。如果只检查行数,则实际上不需要同时选择用户名和密码来节省内存。@arunrc:注意使用此代码,因为它有SQL注入venerability@MMM .. arunrc是初学者级别的…所以对初学者来说这是最简单的方法。@saba不,这是一个站不住脚的借口。你不应该教人们如何做错事。这是一个非常严重的错误,永远不应该犯。解释他为什么应该转义字符串很容易。@arunrc:在将字符串包括在查询中之前,需要使用mysql\u real\u escape\u string$转义字符串,如$username=mysql\u real\u escape\u string$\u POST[username]。执行此操作是为了避免有人通过在字符串末尾添加额外内容来编辑您的查询。作为初学者,我真的理解这段代码。。但是如果有..请解释错误,或者在循环中列出$username、$password、$otherfield=mysql\u fetch\u array$sql{,这更容易,因为您可以使用变量$username、$password等
if(isset($_POST['login']))
{
$username=$_POST['username'];
$password=$_POST['password'];
$username=mysql_real_escape_string($username);
$password=mysql_real_escape_string($password);
$query = "select username,password from tableName
where username='$username' and password='$password'";
$sql = mysql_query($query);
if(mysql_num_rows($sql) == 1)
{
// Login success save username in session redirect to homepage
header("location:homepage.php");
exit();
}
else
{
// Display error message
}
}
$username="username";
$password="password";
//Specify MySQL database to connect to
$database="database";
//Create connection and select the appropriate database
mysql_connect("localhost",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
//Get the username and password from posted form
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
//Build the query to look for users that exist with that username/password combination
//Here I'm using the users table within my database
$query = "SELECT * FROM users where username=\"$username\" and password = \"$password\" ";
//Retrieve the results of the query, and also aquire the number of records returned
$result = mysql_query($query);
$num = mysql_numrows($result);
//Check to see how many records are returned
if ($num>0)
{
//User login was successful
echo 'success login';
} else {
//Login was unsuccessful
echo 'user name not found';
}