【问题标题】:php radio values won't update columnsphp单选值不会更新列
【发布时间】:2015-08-02 14:18:06
【问题描述】:

我正在编写一个更新 mysql 的 php 函数,它记录所有更新完美的内容,除了单选按钮值我什至尝试打印单选值以检查收音机是否工作,我得到了成功的结果,但问题仍然存在,我无法更新我的 SQL 中的单选值

这里要提到的重要一点是“单选值是整数 1、2 3 等”

这是我的html代码

        <input type="radio" name="active_status" id="radio1" class="we-radio" value="1">
        <label for="radio1" class="we-label">Active</label>

        <input type="radio" name="active_status" id="radio2" class="we-radio" value="0">
        <label for="radio2" class="we-label">Inactive</label>

        <input type="radio" name="featured_status" id="radio3" class="we-radio" value="1">
        <label for="radio3" class="we-label">Featured</label>

        <input type="radio" name="featured_status" id="radio4" class="we-radio" value="0">
        <label for="radio4" class="we-label">Normal Video</label>

它是我的 php 代码

    $activation_vid = $_POST['active_status'];
    $featured_vid = $_POST['featured_status'];

$updates = array();
    if (!empty($activation_vid))
      $updates[] = '`vid_act_stat` ="'.mysqli_real_escape_string($conn,$activation_vid).'"';
    if (!empty($featured_vid))
      $updates[] = '`vid_featured_stat` ="'.mysqli_real_escape_string($conn,$featured_vid).'"';

 $updates = implode(', ', $updates); 
    $sql = "UPDATE `tblmevids` SET $updates WHERE vid_id = '$vid_edit_id'";
$result=mysqli_query($conn,$sql);
        if($result){
                $sucess = "<div class='success'>Perfect!!! Vid has been updated: ".$current_vid_code."</div>";
        } else {
                $error_display = "<div class='errormsgbox'>An error occured. Please Try Again</div>";
        }

【问题讨论】:

  • SQL 表中的字段类型是什么?
  • 这里也提到过INT(5)

标签: php jquery html mysql


【解决方案1】:

当您选择非活动状态时,您在 POST 中传递 0 值并且您正在使用 空函数来检查导致问题的原因。因此,只有当您选择活动状态时,您的查询才会将其更新为非活动状态,条件将失败 而是使用空

 if (!empty($activation_vid))

使用

isset() and is_numeric()

来自 PHP 手册http://php.net/manual/en/function.empty.php

以下的东西被认为是空的:

"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
$var; (a variable declared, but without a value)

它对我有用 试试这个

$activation_vid = '0';
$featured_vid = '1';
$vid_edit_id=5;
$updates = array();
    if (is_numeric($activation_vid) and isset($activation_vid))
      $updates[] = '`vid_act_stat` ="'.$activation_vid.'"';
    if (is_numeric($featured_vid) and isset($featured_vid))
      $updates[] = '`vid_featured_stat` ="'.$featured_vid.'"';

 $updates = implode(', ', $updates); 
$sql = "UPDATE `tblmevids` SET $updates WHERE vid_id = '$vid_edit_id'";
print_r($sql);
...
 //rest of your code

【讨论】:

【解决方案2】:

由于我们只能猜测您的程序出了什么问题,这里有一些提示:

1. 不要在整数值上使用mysqli_real_escape_string。而是使用intval 函数:

$activation_vid = intval($_POST['active_status']);

2.在您的 SQL 语句中不要将整数值放在引号中:

$updates[] = "`vid_act_stat` = {$activation_vid}";

$sql = "UPDATE `tblmevids` SET $updates WHERE `vid_id` = $vid_edit_id";

3. 这实际上不是一个错误,而是一个建议。如果要在 0 和 1 之间交替,请使用 checkbox 而不是 radio 按钮。

4. 正如“CY5”所说,empty 在变量值为0 时也会返回false,因此您必须使用不同的if 语句来检查接收参数的有效性。

【讨论】:

  • 感谢您帮助我,也让我学到了很多知识
猜你喜欢
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多