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

如何使用MySQLi在PHP中获取数据?,php,mysqli,Php,Mysqli,我尝试了好几次,但都无法根据PHP5.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 tr

我尝试了好几次,但都无法根据PHP5.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;
    }

首先,
$\u 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数据库连接?我明白了,但这真的有效吗

另外,通过将
或die(mysql\u error($con))
添加到
mysqli\u查询($con,$query)
行,检查是否存在错误

此外,您还有一个
$\u SESSION
值,但您是否在脚本的开头设置了
SESSION\u 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;
}
$r=$mysqli->query(“从用户中选择*);
而($row=$r->fetch_assoc())
{
?>

你能试试这个代码吗



要在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\u result()
。这将为您提供一个对象,您可以对该对象进行迭代以逐个获取每一行

$result = $stmt->get_result();
foreach ($result as $row) {
    echo $row['user_id'];
}

如果您只开始学习PHP,请考虑学习,使用更简单,功能更丰富。仅使用MySQL用于遗留项目。

为什么不引用“<代码> $$POST [密码])始终打印您的查询,然后您就会知道什么是PRBLMGUY,欢迎来到黑客天堂!!!永远不要直接使用发布的数据来运行查询。请参阅(这也将“修复”至少一个问题)检查@JakeGould的解决方案。这是一个开始详细解释您的代码的好地方,如果可能的话。
$stmt = $mysqli->prepare('SELECT * FROM teacher WHERE tremail=?');
$stmt->bind_param('s', $_POST['email']);
$stmt->execute();
$result = $stmt->get_result();
foreach ($result as $row) {
    echo $row['user_id'];
}