我尝试了几次但是无法成功获得正确的语法 - 根据PHP 5.5.12 - 从我的数据库中获取单行或多行。
session_start();
$con=mysqli_connect("localhost","root","","doortolearn");
if (!$con) {
echo "Could not connect to DBMS";
}
$query="select * from teacher where tremail='$_POST[email]' and trpasssword='$_POST[password]'";
$result=mysqli_query($con,$query);
$flag=FALSE;
while ($row=mysqli_fetch_array($result,MYSQLI_BOTH)) {
$_SESSION['email']=$row['email'];
$flag=TRUE;
}
答案 0 :(得分:2)
首先,'
周围没有单引号$_POST[password]
:
$query = "SELECT * FROM teacher WHERE tremail='". $_POST['email'] ."' and trpasssword='" . $_POST['password'] . "'";
$result = mysqli_query($con, $query) or die(mysqli_error($con));
$flag = FALSE;
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
$_SESSION['email'] = $row['email'];
$flag = TRUE;
}
但是过去,你甚至在这里设置了MySQL数据库连接吗?我看到$con
但是真的有效吗?
另外,通过向or die(mysql_error($con))
行添加mysqli_query($con, $query)
来检查是否有错误。
此外,您有一个$_SESSION
值,但是您是否在脚本的开头设置了session_start
?
但我还建议你使用mysqli_stmt_bind_param
作为你的值,如果你不打算进行基本的验证,至少要逃避它们:
$query = "SELECT * FROM teacher WHERE tremail=? and trpasssword=?";
mysqli_stmt_bind_param($query, 'ss', $_POST['email'], $_POST['password']);
$result = mysqli_query($con, $query) or die(mysqli_error($con));
$flag = FALSE;
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
$_SESSION['email'] = $row['email'];
$flag = TRUE;
}
答案 1 :(得分:0)
您可以尝试使用此代码
<?php $query=mysqli_query($connection, "SELECT * FROM user");
while($rows=mysqli_fetch_array($query)){ ?>
<tr>
<td><?php echo $rows['name']; ?></td>
<td><?php echo $rows['age']; ?></td>
<td><?php echo $rows['mobile']; ?></td>
<td><?php echo $rows['email']; ?></td>
</tr>
<?php } ?>
答案 2 :(得分:0)
要使用PHP中的mysqli扩展从MySQL成功获取数据,您需要执行或多或少的三个操作:连接,执行准备好的语句,获取数据。
连接:
连接非常简单。用于打开连接的总是只有3行代码。您可以启用错误报告,创建新的mysqli实例并设置正确的字符集。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'pass', 'db_name');
$mysqli->set_charset('utf8mb4');
准备好的声明
这是棘手的部分。您需要准备要执行的SQL语句。 小心谨慎,切勿将PHP变量直接连接到SQL 。使用占位符绑定变量。语句准备就绪后,您可以在服务器上执行它。
$stmt = $mysqli->prepare('SELECT * FROM teacher WHERE tremail=?');
$stmt->bind_param('s', $_POST['email']);
$stmt->execute();
获取数据
如果准备好的语句应返回一些结果,则需要获取它们并对记录进行处理。要获取结果,请使用get_result()
。这将为您提供一个对象,您可以对其进行迭代以逐个读取每一行。
$result = $stmt->get_result();
foreach ($result as $row) {
echo $row['user_id'];
}
如果您只是开始学习PHP,请考虑学习PDO。它更易于使用,并提供更多功能。 mysqli仅用于旧项目。
答案 3 :(得分:-1)
$r =$mysqli->query("select * from users");
while ( $row = $r->fetch_assoc() )
{
?>
<tr>
<td><?php echo $i++; ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['pwd']; ?></td>
</tr>
<?php
}
?>