如何使用MySQLi在PHP中获取数据?

时间:2014-06-04 03:52:10

标签: php mysqli

我尝试了几次但是无法成功获得正确的语法 - 根据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;
    }

4 个答案:

答案 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
  }
  ?>