Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将精确的数据值插入数据库_Php_Mysql - Fatal编程技术网

Php 将精确的数据值插入数据库

Php 将精确的数据值插入数据库,php,mysql,Php,Mysql,拜托,我需要帮助。我有这段代码,它可以按照我想要的方式工作,但是当插入到数据库中时,它会插入id和state_id,我用它作为主键和外键来创建数据库中两个表之间的关系。我希望它插入的是准确的值,而不是id或状态id。谢谢 <?php include 'dbconnect.php'; $query = "SELECT `id`,`states` FROM `states`"; $result1 = mysqli_query($dbconnect,$query); $rows = my

拜托,我需要帮助。我有这段代码,它可以按照我想要的方式工作,但是当插入到数据库中时,它会插入id和state_id,我用它作为主键和外键来创建数据库中两个表之间的关系。我希望它插入的是准确的值,而不是id或状态id。谢谢

<?php
 include 'dbconnect.php';
 $query = "SELECT `id`,`states` FROM `states`";
 $result1 = mysqli_query($dbconnect,$query);
 $rows = mysqli_num_rows($result1);
 if ($rows){
   while($row = mysqli_fetch_assoc($result1)){
   $states[] = array("id" => $row['id'], "val" => $row['states']);
 }
}

 $query = "SELECT `id`, `state_id`, `local_government` FROM `local_governments`";
 $result2 = mysqli_query($dbconnect,$query);
 $rows2 = mysqli_num_rows($result1);
 if ($rows2){
   while($row2 = mysqli_fetch_assoc($result2)){
   $local_government[$row2['state_id']][] = array("id" => $row2['id'], "val" => $row2['local_government']);
  }

   $jsonStates = json_encode($states);
   $jsonLocal_government = json_encode($local_government);
}

 if (isset($_POST['submit'])){
     $stateOforigin = htmlspecialchars(trim($_POST['stateOforigin']));
     $LGA = htmlspecialchars(trim($_POST['LGA']));

     $sql = "UPDATE `sono` SET `stateOforigin`='$stateOforigin', `LGA`='$LGA' WHERE `eMail`='$email'";
     $check = mysqli_query($dbconnect, $sql);
     header ('location: form2.php');        
    ?>



    <script type="text/javascript">
    <?php
      echo "var states = $jsonStates; \n";
      echo "var local_government = $jsonLocal_government; \n";
  ?>
     function loadStates(){
      var select = document.getElementById("statesSelect");
      select.onchange = updateLocal_government;
      for(var i = 0; i < states.length; i++){
      select.options[i] = new Option(states[i].val,states[i].id);          
     }
   }
     function updateLocal_government(){
      var statesSelect = this;
      var state_id = this.value;
      var local_governmentSelect=document.getElementById("local_governmentSelect");
  local_governmentSelect.options.length = 0; //delete all options if  any present
      for(var i = 0; i < local_government[state_id].length; i++){
      local_governmentSelect.options[i] = new Option(local_government[state_id][i].val,local_government[state_id][i].id);
      }
   }

 </script>
   <body onload='loadStates()'>
   <p style='padding-left: 0px; font-size: 12px; font-weight: bold'>State Of Origin</p>
        <p><select name="stateOforigin" class="userarea" id="statesSelect"></p></select>
        <p style='padding-left: 0px; font-size: 12px; font-weight: bold'>Local Govt. Area</p>
        <p><select name="LGA" class="userarea" id="local_governmentSelect">
        <option value="Null">Loading</option></p>
        </select>
</body>
现在您正在使用
新选项(状态[i].val,状态[i].id)
这导致
states[i].val

提交
表单时,
选项
用于
$\u POST
,而不是
标记之间的文本。这篇文章只适合我们人类,所以我们知道我们在选择什么

将命令更改为
新选项(状态[i].val,状态[i].val)
将导致
states[i].val
现在想要的值在
$\u POST
中使用


@CBroe所说的,从规范化的角度来看,也是正确的,但可能不是您想要的。

解决这个问题的最简单方法是在
newoption()
中使用两次所需的值,这样您就得到了
value
这个不可理解的问题。你现在得到了什么结果?你希望得到什么?另外,你提到了$email var,但没有初始化。我将id和state_id插入到数据库中,但我想要的是要插入到数据库中的状态的确切名称。不,你不想这样做-如果你想做对的话,就不要这样做。规范化是关键词。谢谢@RST。我尝试过你的解决方案,它输入了正确的值,但是第二个选择器选项没有加载。我不知道你的意思。我的意思是你给出的答案现在起作用了。我现在正在将准确的值输入数据库。但第二个选择——地方政府——并没有被加载。您可以从代码中进行检查。当我两次传递val时,它正在插入正确的值,但第二个选择器选项未加载。我理解。您正在使用
var state\u id=this.value这不再是真的。您必须通过搜索
states\u val
states
中检索state\u id,或者您可以执行类似
new Option(states[i].val,states[i].id+'.+states[i].val)
的操作,这很可能会导致
states[i].val
。现在,当您需要id或val时,只需将值分成两部分,然后使用所需的部分。我希望这是有道理的。