【问题标题】:If input empty, no insert in mysql (pdo) [closed]如果输入为空,则不插入 mysql (pdo) [关闭]
【发布时间】:2013-05-02 10:01:30
【问题描述】:

如果任何输入字段为空,则不要插入 mysql。某些输入字段可能(可接受)为空白。在这种情况下,我需要插入非空白字段(值)。但是脚本根本没有插入。

我可以写类似的东西

if ( (strlen($date_day1) < 1) ) {
$date_day1 = 0;
}

但可能是更好的解决方案?如果输入字段为空,则插入所有其他字段。空字段不能插入或插入 0。

输入

<input type="text" name="date_day1" id="date_day1"</td>
<input type="text" name="amount1" id="amount1"</td>
<input type="text" name="row_id1" id="row_id1"</td>

然后ajax获取输入值

$(document).ready(function(){
autosave();
});
function autosave() {
var t = setTimeout("autosave()", 5000);
var date_day1 = $("#date_day1").val();
var amount1 = $("#amount1").val();
var row_id1 = $("#row_id1").val();
$.ajax( {
type: "POST",
url: "_autosave.php",
data: "date_day1=" + date_day1 + "&amount1=" + amount1+ "&row_id1=" + row_id1,
cache: false,
} );
}

然后php获取变量

$date_day1 = $_POST['date_day1'];
$amount1 = $_POST['amount1'];
$row_id1 = $_POST['row_id1'];

然后尝试在mysql中记录

$stmt_insert = $db->prepare("INSERT INTO 2_1_journal(RecordDay, Amount, RowId) VALUES(:RecordDay,:Amount,:RowId)");


$stmt_insert->execute(array(':RecordDay' => $date_day1, ':Amount' => $amount1, ':RowId' => $row_id1,

));

更新

有了这样的改变 ajax 插入工作,但这不起作用 success: function(){ document.getElementById('is_row_changed1').value = 0;}

$(document).ready(function(){           
autosave();
});
function autosave() {
var t = setTimeout("autosave()", 5000);
var date_day1 = $("#date_day1").val();
var amount1 = $("#amount1").val();
var row_id1 = $("#row_id1").val();

if ($("#is_row_changed1").val() > 0) {
$.ajax( {
type: "POST",
url: "_autosave.php",
dataType: "json",
data: {"date_day1" : date_day1, "amount1" : amount1, "row_id1" : row_id1},
cache: false,

success: function(){
document.getElementById('is_row_changed1').value = 0;
}

} );

}
}

【问题讨论】:

  • 错字:$row_id_1$row_id1 不同。这可能就是数据库拒绝存储记录的原因……它没有 ID。
  • 不,没有 row_id_1 是我在这里打错了。到处都是row_id1
  • $db-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 添加到您的代码中,查看执行插入语句是否出错。

标签: php mysql ajax pdo


【解决方案1】:

更改您的 ajax 部分,这将起作用:

$.ajax( {
type: "POST",
url: "_autosave.php",
dataType: "json",
data: {"date_day1" : date_day1, "amount1" : amount1, "row_id1" : row_id1},
cache: false,
} );

希望这会对你有所帮助。

【讨论】:

  • 是的,它有帮助,但这确实代码无法成功:function(){ document.getElementById('is_row_changed1').value = 0; }。我将修改有问题的代码
  • @user2232696 好的,所以从 ajax 请求中删除 dataType: "json", 代码。那么你的s_row_changed1 字段在哪里。
  • 谢谢,一切顺利!你能建议 dataType: "json" 在这里做什么(影响)吗?为什么下面的代码不适用于 dataType: "json",?
  • @user2232696 是的,我可以解释。 json数据类型是javascript对象表示法,我们将数据转换为对象意味着将javascript的数据绑定到一个对象中以发送数据。如果你使用它,那么它也需要在 json 中接收返回数据。 json 格式非常简单,您可以在我使用的数据变量中看到。
【解决方案2】:

要添加非空白值,试试这个

$date_day1 = (trim($_POST['date_day1'])!="" ? $_POST['date_day1'] : 0);

以同样的方式,您可以测试其他字段是否为空并添加默认值并将这些变量传递给查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多