【问题标题】:set the variable as constant将变量设置为常量
【发布时间】:2021-11-01 07:58:26
【问题描述】:

SQL 从表 ''users" 获取最新条目。$check 是存储它的变量, 我希望代码以某种方式运行,如果 $check get 是一个值,它保持不变,即使 ''users'' 获得任何其他最新条目..

这是我的代码

    <?php
    include 'db.php';
    
    
    $email = isset($_POST['email']);
    $fname = isset($_POST['fname']);
    $user_id = isset($_POST['user_id']);
    
    $sql = "SELECT * FROM users WHERE user_id=(SELECT max(user_id) FROM users)";
    
    
    $result = $conn->query($sql);
    
    while ($row = $result->fetch_assoc()) {   $check=$row['user_id'] ; }
    
    ?>

【问题讨论】:

  • 你为什么做的这么复杂? SELECT * FROM users ORDER BY user_id DESC LIMIT 1.
  • 你不需要循环,因为只有一行。
  • $check 不会改变,除非您在添加新行后再次执行此代码。

标签: php mysql sql database


【解决方案1】:

这里稍微整理一下。 您希望使用的查询是获取最后添加的用户,并且不需要子选择,如下面的查询所示。 在这里,我们使用了一些假变量,这些变量来自您对 POST 变量的验证。 您无需使用 foreach 循环遍历结果,因为结果直接在 $res 变量中。

<?php

$dbh = new PDO("mysql:host=localhost;dbname=my_database", 'oldboot', 'bigkev123');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// validated variables from POST 
$email = 'kev@example.com';
$fname = 'kevvo';
$user_id = 2;

$stmt = $dbh->prepare("SELECT * FROM users ORDER BY id DESC LIMIT 1");
$stmt->execute();
$res = $stmt->fetch();

echo $res['name']."\n";
$check = $res['user_id'];
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多