表单中的$ _POST数据在进入MySQL之前被更改

时间:2015-07-10 17:36:49

标签: php mysql forms post

这里有新的堆栈交换,但这里什么都没有。因此,当我将表单发送到我的apache服务器时,我的数据只显示为1和0。使用var_dump [_ $ POST];在传递给MySQL之前显示我的所有数据都是正确的。 我的HTML格式:

<form method="POST" action="submit.php" class="subForm">
        <input type="text" name = "item1" value="0">
        <input type="text" name="item2" value="0">
        <input type="text" name="item3" value="no">
        <input type="text" name="item4" value="no">
        <input type="text" name="item5" value="no">
        <input type="text" name="item6" value="no">
        <input type="submit" id = "form2">
    </form>

我的php:

$connect = mysqli_connect('*****','*****','*****','*****');
if(!$connect){
    die('Could not Connect: ' . mysqli_error($connect));
}
$NoR = isset($_POST["item1"]);
$CC = isset($_POST["item2"]);
$SD = isset($_POST["item3"]);
$HD = isset($_POST["item4"]);
$pack1 = isset($_POST["item5"]);
$pack2 = isset($_POST["item6"]);
$sql = "INSERT INTO form_test (item_1,item_2,item_3,item_4,item_5,item_6) VALUES (".$NoR.",".$CC.",".$SD.",".$HD.",".$pack1.",".$pack2.")";
mysqli_query($connect, $sql);
mysqli_close($connect);
var_dump($_POST)

var_dumb显示所有数据输入都是正确的,但在表格本身中,所有数据都显示为1和0。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

在php中,isset将返回boolean值(如果已设置则为true,否则为false),当您尝试在php中打印boolean时,它将显示为1或0.我建议在代码中使用三元比较,它比拥有大量if语句更短,更易读:

$NoR = isset($_POST["item1"]) ? $_POST["item1"] : '';
$CC = isset($_POST["item2"]) ? $_POST["item2"] : '';
$SD = isset($_POST["item3"]) ? $_POST["item3"] : '';
$HD = isset($_POST["item4"]) ? $_POST["item4"] : '';
$pack1 = isset($_POST["item5"]) ? $_POST["item5"] : '';
$pack2 = isset($_POST["item6"]) ? $_POST["item6"] : '';

答案 1 :(得分:0)

在HTML表单中添加

    <input type="text" name="action" value="submit">

PHP代码将是

if (isset($_POST['action']) && ($_POST['action']) == 'submit') {
    $NoR = mysqli_real_escape_string($_POST["item1"]);
    $CC = mysqli_real_escape_string($_POST["item2"]);
    $SD = mysqli_real_escape_string($_POST["item3"]);
    $HD = mysqli_real_escape_string($_POST["item4"]);
    $pack1 = mysqli_real_escape_string($_POST["item5"]);
    $pack2 = mysqli_real_escape_string($_POST["item6"]);
    $sql = "INSERT INTO form_test (item_1,item_2,item_3,item_4,item_5,item_6) VALUES (".$NoR.",".$CC.",".$SD.",".$HD.",".$pack1.",".$pack2.")";
    mysqli_query($connect, $sql);
    mysqli_close($connect);
    //var_dump($_POST)
}

答案 2 :(得分:-1)

isset仅在设置值时才会显示。如果设置为0,则为1。

使用

if(isset($_POST["item1"])){
  $NoR = $_POST["item1"];`
}

更新:我为您制作代码,使sude ISSET值仅转到INSERT查询!

$arrColumns = $arrValues = array();
foreach($_POST as $key=>$value){
    $arrColumns[] =  key($key);
    $arrValues[] = $value; 
}
if(is_array($arrValues)){
   $sql = "INSERT INTO form_test (implode(',',$arrColumns)) 
           VALUES(implode(',',$arrValues)";
   mysqli_query($connect, $sql);
}
mysqli_close($connect);