繁体   English   中英

PHP - 从sql数据库获取数据

[英]PHP - getting data from sql database

我在使用会话从我的sql数据库获取数据时遇到问题。 我正在尝试建立一个登录系统。 我已经有了这个工作,但每次使用都被定向到同一页面 - 我希望它上面的私人配置文件只能由登录使用正确电子邮件地址和密码的人查看。

我使用以下代码 - 我在第19行收到错误! 如果我是诚实的,我不会100%理解这一行 - 我是PHP和SQL的新手,并且已经阅读了所有这些,但没有得到完全解释给我的答案。

任何帮助将不胜感激 - 任何事情都可以参考我的教程......

<?php # DISPLAY COMPLETE FORUM PAGE.

# Access session.
session_start() ;

# Redirect if not logged in.
if ( !isset( $_SESSION[ 'user_id' ] ) ) { require ( 'login_tools.php' ) ; load() ; }

# Set page title and display header section.
$page_title = 'Forum' ;


# Open database connection.
require ( 'connect_db.php' ) ;

# Display body section, retrieving from 'forum' database table.
$q = "SELECT * FROM users WHERE user_id = $_SESSION[email]" ;
$r = mysqli_query( $dbc, $q ) ;
if ($result = $mysqli->query("SELECT * FROM users"))
{
  echo '<table><tr><th></th><th></th><th id="msg"></th></tr>';
  while ( $row = mysqli_fetch_array( $r, MYSQLI_ASSOC ))
  {
    echo '<tr><td>' . $row['first_name'] .' '. $row['last_name'] . '<br>'.        $row['email'].'</td>
    <td>','</td><td>','</td> </tr>';
  }
  echo '</table>' ;
}
else { echo '<p>There are currently no messages.</p>' ; }

# Create navigation links.
#echo '<p><a href="post.php">Post Message</a> | <a href="shop.php">Shop</a> | <a     href="home.php">Home</a> | <a href="goodbye.php">Logout</a></p>' ;

# Close database connection.
mysqli_close( $dbc ) ;



?>

您的会话中有语法错误:

$q = "SELECT * FROM users WHERE user_id = $_SESSION[email]" ;

将其更改为:

$q = "SELECT * FROM users WHERE user_id = {$_SESSION['email']}" ;

但是,您还应该在将会话数据插入数据库之前将其转义。

此外, while()循环中的文本还有另一个语法错误:

echo '<tr><td>' . $row['first_name'] .' '. $row['last_name'] . '<br>'.        $row['email'].'</td>
<td>','</td><td>','</td> </tr>';

删除逗号,将其替换为句点:

echo '<tr><td>' . $row['first_name'] .' '. $row['last_name'] . '<br>'. $row['email'].'</td> <td>' . '</td><td>' . '</td> </tr>';

就像@gareth说的那样,你应该选择prodedural或面向对象的编码风格并坚持使用IE,使用mysqli_query()$mysql->query() :)

你需要决定你是在程序风格中使用mysqli (比如在这个提取的第一行)还是在面向对象的风格中(比如第二行)。

$r = mysqli_query( $dbc, $q ) ;
if ($result = $mysqli->query("SELECT * FROM users"))
{

看看你发布的代码的其余部分,我想把第二行(你的第19行)更改为if ($result = mysqli_query("SELECT * FROM users"))将消除该错误(尽管不一定是其他错误)。

你说“ 我在第19行收到错误! ” - 你上面的换行是否显示第20行,开头没有引号,而你的代码中有td? 如果是,则删除换行符并确保第19行继续直到表行的其余部分为“;”

试着这样写

$q = "SELECT * FROM users WHERE user_id = '". $_SESSION['email']. "'";

编辑:

当您比较email它意味着它应该是字符串,因此您需要将其包装在上面的引号中。

也尝试

if ($result = mysqli_query($dbc, "SELECT * FROM users"))

请参阅用户过程方式或OOP方式。 通过向mysqli_query()添加$dbc来尝试上面的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM