如何从html转换为php

如何从html转换为php,php,html,Php,Html,我必须生成下一个可用ID,它是表中的主键,但为此,我必须在输入标记的value属性中从html转换为PHP 这不起作用,因为PHP文件挂起在两者之间,不允许加载整个页面 我尝试过以下代码: <input type="number" id="id" class="textbox" name="s_id" onkeyup="showAvailableId(this.value)" min="10000" max="999999" value ="<?php $mysqli = new

我必须生成下一个可用ID,它是表中的主键,但为此,我必须在输入标记的value属性中从html转换为PHP

这不起作用,因为PHP文件挂起在两者之间,不允许加载整个页面

我尝试过以下代码:

<input type="number" id="id" class="textbox" name="s_id" onkeyup="showAvailableId(this.value)" min="10000" max="999999" 
value ="<?php $mysqli = new mysqli('localhost', 'root', '', 'project_db');
   if($mysqli->connect_error) {
        exit('Could not connect');
       }
   $sql = 'SELECT student_id from students WHERE student_id = 11120';
   $stmt->execute();
   $stmt->store_result();
   $stmt->bind_result($result);          
   $stmt->fetch();
   $stmt->close();

   if ($result != NULL){
          echo ++$result;
   }?>" required><label id="demo"></label>

我认为您不想这样做,如果100人同时运行此代码,他们都会获得相同的下一个可用id,但实际上只有1人能够使用它做任何事情,因为它是主键,所以无论谁先提交表单,都会得到id,但其他人都会返回false,他们都陷入了一个循环,直到有足够多的人放弃或等待足够长的时间提交表格


您应该重新思考您试图实现的目标

我不太理解这个需求,我会使用mysql的自动增量,如果在这个代码段之前有插入,我会使用“选择最后一个ID”。 但是您必须小心这种生成ID的方法。 您必须提交没有ID的表单,并在MySQL中生成ID

    <?php 
  $nextID = array("student_id"=>0);

  $mysqli = new mysqli('localhost', 'root', '', 'project_db'); 

  /* check connection */
  if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
  }

  $sql = 'SELECT MAX(student_id) + 1 AS student_id from students';  
  if ($result = $mysqli->query($sql)) {
    while ($row = $result->fetch_row()) {
        $nextID = $row[0]['student_id'];
    }  
    $result->close();
  }
  $mysqli->close();

?>

<input type="number" id="id" class="textbox" name="s_id" onkeyup="showAvailableId(this.value)" min="10000" max="999999" 
value="<?php echo $result['student_id']; ?>" required><label id="demo"></label>


是的,但是你的代码乱七八糟。没有人在做你正在做的事情,因为这会使事情难以管理和维护。你说的“挂起”是什么意思?您的意思是脚本执行时间太长吗?您的SQL字符串已修复?$stmt在哪里声明?为什么需要生成下一个可用ID?这让我怀疑。是否在数据库中未使用自动递增字段?应用程序不应该告诉数据库新行使用什么ID…这可能导致两个用户同时请求下一个ID,当他们插入具有该ID的记录时,提交的第二个用户发现该ID已被数据库接受。然后要么应用程序崩溃,因为开发人员从未想到这一点,要么可怜的用户必须不断提交,直到他们幸运并获得免费ID。但我仍然质疑你为什么要知道下一个ID?一旦输出,您将使用它做什么?我想不出一个好的理由想知道它。正如我和其他人所说的,如果您是为了以后创建一个具有该ID的新行而使用它,那么请不要再想一想,而是使用自动递增字段,这是在数据库中生成新的唯一ID的可靠的、防并发的、行业标准的方法。我这样说是为了潜在地阻止你在一个不好的特性上浪费时间。这不是一个好的解决方案,因为当你的查询执行时,它可能(在任何合理大小的站点中几乎肯定会)在表单返回时已经过时了。正如我所说,它不是应该工作的方式!但是源代码更正了数据库中的查询模式。请注意,$sql变量没有在任何地方使用。@Rodrigo Rea我在代码中做了一些修改后得到了我的解决方案。您应该在回显时修改第1行,它应该是$nextID['student\u id'],而在辅助$nextID=$row[0]['student\u id']时修改第2行,使其成为$nextID=['student\u id'=>row[0]],其他内容都很好,谢谢