【问题标题】:PHP and MYSQLI Check if user ID is present and if not create itPHP 和 MYSQLI 检查用户 ID 是否存在,如果不存在则创建它
【发布时间】:2018-11-05 15:58:13
【问题描述】:

我在互联网上寻找这个问题的答案已经 3 周了,但找不到任何接近或派上用场的东西。我有一个需要检查的数据库表。如果该表中存在Users_ID,我希望我的代码以action="" 标记的形式显示update.php 链接,并且如果该数据库表中不存在Users_ID,那么我希望要在表单中链接的 Insertdb.php 页面而不是 update.php 页面。这是我所拥有的:

PHP 代码:

<?php
session_start();
error_reporting(E_ALL);
include_once("dbconnect.php");

$users_id = $_SESSION['user_id'];
$sql = "SELECT * FROM dbtable WHERE uid=$users_id";
if($results = $con->query($sql)) {
  while($display = $results->fetch_array(MYSQLI_ASSOC)) {
    $uid = $display['uid'];
    if($display['uid']==""){
      $pagelink = "insertintodb.php";
    }else{
      $pagelink = "updatedb.php";
    }
  }
  $results->close();
}
?>

我的 HTML 部分如下所示:

HTML 代码:

<form action="<?php echo $pagelink; ?>" method="POST">
  <input type="text" value="" placeholder="Insert Value" name="something" />
  <input type="submit" value="Submit Data" name="submit_data_to_db" />
</form>

我该怎么做呢?我当前的方法上面发布的是我目前正在使用的方法,但是当我根据页面视图源检查它时它只显示&lt;form action="" method="POST"&gt;。无论如何,请帮助我。任何和所有的帮助将不胜感激。谢谢

【问题讨论】:

  • 您检查过 REPLACE 语句吗?
  • $_SESSION['user_id'] 来自哪里?如果$pagelink 为空,则意味着您的脚本不会在查询SELECT * FROM dbtable WHERE uid=$users_id 中返回结果
  • @LoïcDiBenedetto 我该怎么做?
  • 首先添加一些错误检查。将ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 添加到脚本的顶部。这将强制任何 mysqli_ 错误生成您可以在浏览器上看到的异常以及正常的 PHP 错误。
  • 如果没有选择没有记录while不会运行。

标签: php forms session mysqli


【解决方案1】:

你通常使用 num_rows 方法:

<?php
session_start();
error_reporting(E_ALL);
include_once("dbconnect.php");

$users_id = $_SESSION['user_id'];
$sql = "SELECT * FROM dbtable WHERE uid=$users_id";
if($results = $con->query($sql)) {
  if($results->num_rows() > 0){
      $pagelink = "insertintodb.php";
    }else{
      $pagelink = "updatedb.php";
    }
  }
  $results->close();
}
?>

【讨论】:

    【解决方案2】:

    我看到你使用$con,但我没有看到你在任何地方声明它。 你能确认它确实存在吗?您的脚本可能会在此时停止执行。

    还有一些我会在那里实现的东西:
    1. 当您使用来自外部来源的变量(例如您的表单),甚至是其他变量时,请务必注意 SQL 注入;
    2. 您的if &amp; else 可以简化为if(当您找到ID 时)。对于所有其他情况,您希望默认行为是您的 else。所以是这样的:

    $pageLink = "insertintodb.php";
    if (!empty($display['uid'])) {
        $pageLink = "updatedb.php"
    }
    

    【讨论】:

    • 我在dbconnect.php文件中使用$con
    • 很公平,您的查询有输出吗?您能否确认它已成功执行,以便您的 while 循环能够执行?
    猜你喜欢
    • 2015-04-29
    • 2017-11-09
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2016-01-18
    • 2017-11-22
    相关资源
    最近更新 更多