2014-09-05 97 views
1

所以即时通讯使用简单的登录和用户区域来创建此网站。使用会话变量在SQL中创建查询

我试图执行一个SQL行,但它显示一个错误。

这是我设置会话变量的checklogin.php页面。

// Check if session is not registered , redirect back to main page. 
// Put this code in first line of web page. 
<?php 
session_start(); 
$tbl_name= "members"; 
$con=mysqli_connect("localhost","root","","bst_planner"); 

// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'"; 
$result=mysqli_query($con,$sql)or die(mysqli_error($con)); 

// Mysql_num_row is counting table row 
$count=mysqli_num_rows($result); 

if($count==1){ 
// Register $myusername, $mypassword and redirect to file "login_success.php" 

    $_SESSION['myusername'] = $myusername; 
    $_SESSION['mypassword'] = $mypassword; 
    $row = mysql_fetch_object($result); 
    $_SESSION["userID"] = $row->id; 
    header("location:login_success.php"); 
} 
else { 
    echo "Wrong Username or Password"; 
} 

echo $myusername;?> 

<html> 
<body> 

</body> 
</html> 

这是出现的错误消息:

这是两个码我在我的user_area.php

<?php 
session_start(); 
$tbl_members= "members"; 
$tbl_directorio= "subject_directorio"; 
$con=mysqli_connect("localhost","root","","bst_planner"); 

if(isset($_SESSION['myusername'])){ 
    echo "You're logged in"; 
} 
else { 
    header("location:index.php"); 
} 
?> 

<?php 
$userID = $_SESSION["userID"]; 

$sql="SELECT * FROM $tbl_directorio WHERE Teacher_id='$userID'"; 
$result=mysqli_query($con,$sql)or die(mysql_error()); 

// Mysql_num_row is counting table row 
$count=mysqli_num_rows($result); 

if($count>=1){ 

echo "Your current planners"; 

} 
else { 
    echo "You haven't created a planner yet"; 
} 
       ?> 

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\wamp\www\user_area.php on line 69

这是69行

$sql="SELECT * FROM $tbl_directorio WHERE Teacher_id='$userID'"; 

我真的很感谢您提供的任何帮助。

+0

'session_start();'loaded?另外,将'或者死(mysql_error())'改为'或死(mysqli_error($ con))'''$ con'是你的数据库连接变量。你不能混合使用MySQL API。 – 2014-09-05 16:27:30

+2

您还需要向我们展示更多代码。你发布的代码和错误消息一样,没有人能够给你一个明确的答案。投票结束为*“这个问题是由于无法再生产的问题引起的......”* – 2014-09-05 16:34:37

+0

对于缺乏信息感到抱歉。我现在已经添加了更多的PHP代码。 – fmonper1 2014-09-05 22:41:46

回答

2

问题是变量$userID是类mysqli_result的一个对象。这是因为在checklogin.php中,您将一个对象写入$_SESSION["userID"],稍后在user_area.php中将该对象写入$userID。 为了解决这个可以改变行:$row = mysql_fetch_object($result); $_SESSION["userID"] = $row->id;
$row = mysqli_fetch_assoc($result); $_SESSION["userID"] = $row['id']; 这样你正在选择它作为一个阵列和只写一个数到可变$userID代替的对象。我希望这有帮助。