无法将所选选项发送到数据库[不能为空错误]

时间:2016-12-20 04:26:11

标签: php mysql

我尝试从选项发送数据,并且我收到此错误"完整性约束违规:1048列' marka'不能为空'在"

任何人都可以帮助或解释为什么在这种情况下$ marka实际上并没有从所选选项中获取数据。

$marka = $_POST['marka'];

$stmt = $DB_con->prepare('INSERT INTO users(
            vEmri,marka, vPic) 
      VALUES(:uemri,:umarka,:upic)');
            $stmt->bindParam(':uemri',$vEmri);
            $stmt->bindParam(':umarka',$marka);
            $stmt->bindParam(':upic',$vPic);

            if($stmt->execute())
            {
                $successMSG = "User added ...";
                header("refresh:5;index.php"); // redirects image view page after 5 seconds.
            }

Ť

<?php
 try {
      $conn = new PDO("mysql:host=$dbhost;dbname=$dbname;charset=utf8",$dbuser,$dbpass,$dbo);
 } catch (PDOException $e) {
      echo $e->getMessage();
      exit;
 }

 $sql = 'SELECT * FROM marka WHERE `status` = 1 ORDER BY marka_name ASC';
 $q = $conn->query($sql);
 $q->setFetchMode(PDO::FETCH_ASSOC);
?>
<tr>
    <td><label class="control-label">Marka:</label></td>
    <td><select name="marka" id="marka">
         <option name="marka" id="marka">Zgjedh marken</option>
             <?php while ($row = $q->fetch()){ ?>
                 <option  value="<?php echo $row['marka_id']; ?>"><?php echo $row['marka_name']; ?></option>
             <?php } ?>
         </select>
    </td>
</tr>
  

错误:   未捕获的异常&#39; PDOException&#39;消息&#39; SQLSTATE [23000]:完整性约束违规:1048列&#39; marka&#39;不能为空&#39;在add.php:88

2 个答案:

答案 0 :(得分:1)

请看一下,您已在代码中写过。

<option name="marka" id="marka">Zgjedh marken</option>

但这是错误的,请更正此行并尝试。 (您应该从此处删除名称和ID,并且需要使用此选项添加值)

希望这会对你有所帮助。

答案 1 :(得分:0)

我不知道问题究竟是什么,所以我开始重新编写相同的代码。

我写了相同的代码,现在它可以工作了,我仍然无法弄清楚它为什么不能正常工作。

发布整个代码,因为我不知道问题是什么,我无法在这里定义。

编辑: 我认为这可能是服务器端错误或其他问题,看起来像是将多个变量发送到数据库的限制,现在它将$ zbritja变为NULL。