Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 使用会话变量访问sql数据库表->;列条目_Php_Html_Mysql_Session Variables - Fatal编程技术网

Php 使用会话变量访问sql数据库表->;列条目

Php 使用会话变量访问sql数据库表->;列条目,php,html,mysql,session-variables,Php,Html,Mysql,Session Variables,这是我的问题 我已经创建了一个登录页面,用户在其中输入自己的姓名并通过登录。数据库已经创建,我将输入的登录信息存储在会话变量中 单击submit,我将用户重定向到php访问mysql数据库的页面,并使用会话变量在数据库中搜索用户名和密码组合 这就是问题所在。会话变量无法访问数据库表项 这是我的密码: <?php //starting the session session_start(); //connecting to database and table "testdb" @mysq

这是我的问题

我已经创建了一个登录页面,用户在其中输入自己的姓名并通过登录。数据库已经创建,我将输入的登录信息存储在会话变量中

单击submit,我将用户重定向到php访问mysql数据库的页面,并使用会话变量在数据库中搜索用户名和密码组合

这就是问题所在。会话变量无法访问数据库表项

这是我的密码:

<?php
//starting the session
session_start();

//connecting to database and table "testdb"
@mysql_connect("localhost","root","") or die("no connect");
@mysql_select_db("testdb") or die ("no select");


//the session variables holding the username and password
//trying to access the entries in table named "table"
$sql="SELECT * FROM `table` WHERE name='.$_SESSION['uname'].' AND
pass='.$_SESSION['pass'].'";

$query=mysql_query($sql);

//printing the result which is just one entry
while($result=mysql_fetch_array($query))

{

echo $result['name'].' ';
echo $result['pass'];

}

?>

我不知道错误是什么,也不知道我是否使用了错误的语法。 我没有对实际的代码写评论…这只是一个相同的例子:D

我不是在寻找替补,因为我现在正处于学习阶段。因此,对此代码的任何修复都将非常感谢


PS:我不知道java脚本。

您的查询有语法错误。您或者需要在会话值周围加上双引号,或者改用花括号。试一试-

$sql="SELECT * FROM `table` WHERE name='".$_SESSION['uname']."' AND
pass='".$_SESSION['pass']."'";


您的字符串语法不正确,这实际上会生成一个解析错误

$sql = "SELECT * FROM `table` WHERE name='" .$_SESSION['uname']. "' AND
pass = '" .$_SESSION['pass'] ."'";
在使用
$\u SESSION['key']
之前,您需要实际关闭字符串,或者取消引号,以便对其进行插值

此代码也极易被注入。您应该将参数化查询与PDO一起使用

$stmt = $pdo->prepare("SELECT * FROM `table` WHERE name = ? AND pass = ?");
$stmt->execute(array($_SESSION['uname'], $_SESSION['pass']));

最明显的是,这完全容易受到SQL注入攻击。但是忽略这一点

$sql="SELECT * FROM `table` WHERE name='.$_SESSION['uname'].' AND pass='.$_SESSION['pass'].'";
。。。应该是

$sql="SELECT * FROM `table` WHERE name='".$_SESSION['uname']."' AND pass='".$_SESSION['pass']."'";

在die方法中,尝试以下方法:
或die(mysql_error())它将给出出错的完美错误!我实际上已经用过了…这只是一个例子…我现在正在研究如何使它成为sql注入的证明…并研究什么是PDO…无论如何感谢你的回答…我仍然不熟悉php的这个概念…我将研究它。谢谢你的帮助…每天学习新的东西
$sql="SELECT * FROM `table` WHERE name='".$_SESSION['uname']."' AND pass='".$_SESSION['pass']."'";