Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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
在第82行的profile.php中对非对象调用成员函数query()_Php_Pdo_Login_Forms - Fatal编程技术网

在第82行的profile.php中对非对象调用成员函数query()

在第82行的profile.php中对非对象调用成员函数query(),php,pdo,login,forms,Php,Pdo,Login,Forms,到目前为止,我可以通过php管理员插入这些值,但不能通过用户配置文件页面上的表单 错误是,“在profile.php的第82行对非对象调用成员函数query()”这一行的php代码如下 $query1=$db->query("SELECT id,title,question,username FROM QnA WHERE username='$dbusername'"); profile.php的其余部分如下所示 <?php session_start()

到目前为止,我可以通过php管理员插入这些值,但不能通过用户配置文件页面上的表单

错误是,“在profile.php的第82行对非对象调用成员函数query()”这一行的php代码如下

   $query1=$db->query("SELECT id,title,question,username FROM  QnA WHERE username='$dbusername'");
profile.php的其余部分如下所示

   <?php 
     session_start();
     $dusername=$_GET['username'];
    if (isset($dusername)){
        require('connect.php');

        $userquery =$db->query("SELECT id,firstname,username,lastname,email FROM users WHERE username = '".$dusername."'");
                while ($row =$userquery->fetch()){
                        $id=$row["id"];
                        $dbusername =$row["username"];
                        $dfirstname = $row["firstname"];
                        $demail =$row["email"];
                        $dlastname =$row["lastname"];

                        }

    }

 ?>
  <html>
   <head><title><?php  echo $dfirstname;?></title>
    <link rel="stylesheet" href="stylesheets/profile.css" type="text/css">
 </head>
 <body>
    <div id="container">

<?php
echo'
 <div id="qform"><center>
  <form action="ask.php" method="post">
   <b>Title</b>
   <br/>
   <input type ="text" name="title"/>
   <br/>
   <b>Question</b>
   <br/>
   <textarea name="question"></textarea>
   <br/>
   <b>This is to make sure your not a robot  2+2=</b>
   <input type="text" name="plus"/>
   <br/>
   <input type="submit" value="Submit"name="submit"/> 
   </form></center>
   </div>
    ';
?>  
<div id="questions">
 <?php 

   $query1=$db->query("SELECT id,title,question,username FROM  QnA WHERE username='$dbusername'");
  //$query2=$db->query("SELECT * FROM answers");

   while($asked=$query1->fetch()){
    if($asked['username']==$dbusername){
     echo '<div class="asked"><b>Title</b><br/><b> ',$asked['title'],'</b>   <hr/><br/><b>Question</b><br/><b>',$asked['question'],'</b></div><br/><br/>';

   }
     else if(!$asked['username']==$dbusername){
          error_reporting(E_ALL);
    echo 'No questions have been asked';
        }

 }
     ?>
 </div>
 </div>
 </center>
 </body>
</html>

您在查询时出错,请在
和password='之间添加空格。
,也许这样可以

$query="SELECT  * FROM  users WHERE username='".$username."' AND password='".$password."' LIMIT 1" ;
要调试错误,请尝试

$res =  mysql_query($query) or die(mysql_error());
请注意,此查询在SQL注入中易受攻击,出于安全目的,您可能应该尝试使用mysqli或PDO


试试这个:

<form action="login.php" method="post" >
<table>
 <tr>
   <td>Username: </td><td><input type="text" name="username" /></td>
 </tr>
 <tr>
    <td>Password: </td><td><input type="password" name="password" id ="password"/></td>
 </tr>
 </table>
   <input type="submit" value="Log In" /> &nbsp;  &nbsp; &nbsp; &nbsp;
   <input type="button" value="Register" onClick="location.href='register.php'" />
</form>

</body>
</html>
<?php


require('connect.php');
session_start();
 if ($_SESSION['username'])
{
header("Location: home.php");
 }
else{
if(isset($_POST['username'])){
 require('connect.php');


 //According to user's input

  $username=$_POST['username'];
  $password=$_POST['password'];
  $query="SELECT  * FROM  users WHERE username='".$username."'AND password='".$password."'";

 $res =  mysql_query($query);

 //check username and password for match
 if (mysql_num_rows($res) > 0){

 //Sets username to the comment session so no username has to be input


$_SESSION['username']=$username;

// jumps to secure page 

 header ("Location: home.php");

}

用户名:
密码:

如上所述,您将获得
0
行值,您的查询中可能有空格或其他内容,请执行以下操作

回应这个问题

SELECT  * FROM  users WHERE username='".$username."' AND password='".$password."'

然后在数据库中手动执行此查询,并查看此查询的结果。并相应地更正您的查询

以下代码根本没有返回True:

if(isset($_POST['username'])){
这就是为什么它会出现在else语句中

您正在为用户名字段使用isset函数,但您应该检查Submit按钮。尝试替换以下行:

<input type="submit" value="Log In" />


然后它应该可以工作:)

感谢SQL注入保护上的指针,我尝试了您在空格中所说的内容,但输出仍然是Else语句@RxVdid您尝试使用
$res=mysql\u query($query)或die(mysql\u error())要调试错误,我认为您的查询没有返回任何返回。您的查询中有许多空格。尝试上面给定的查询。尝试回显mysql\u num\u行($res)
它将返回多少行?它回显0@非常感谢你这是怎么回事。。上帝保佑
<input type="submit" value="Log In" />
<input type="submit" value="Log In" name="submitbtn" />
if(isset($_POST['username'])){
if(isset($_POST['submitbtn'])){