如何使用MySQLi在PHP中获取数据?
我尝试了好几次,但都无法根据PHP5.5.12获得正确的语法-从数据库中获取单个或多个行如何使用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
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'];
}