向 MySQL (PHP) 添加值时防止在输入字段中执行数学表达式

Posted

技术标签:

【中文标题】向 MySQL (PHP) 添加值时防止在输入字段中执行数学表达式【英文标题】:Prevent executing mathematical expression in input field when adding value to MySQL (PHP) 【发布时间】:2012-07-15 09:13:46 【问题描述】:

我已经设置了以下表格:

<form name="pric" method="post" action="up.php">
    <div id="prices_col">Season A<br>
        <input type='text' name="date0" maxlength="13" size="15" style="font-size: 9px;" value="<?php echo $_date[0]?>" />
    </div>
    <div align="middle"><input type="submit" value="EDIT"></div>
</form>

现在数据库中的信息是这样的($_date[0] 包含):

04/06 - 25/06

发布信息后,它决定运行表达式,我得到如下内容:

-1.333333333

我使用以下代码:

$_date[0] = trim($_POST["date0"]);
mysql_query("UPDATE price SET _date=".$_date[0]." WHERE id='0'") or die(mysql_error());

如何阻止它执行?我需要将值作为纯文本存储到数据库中。

【问题讨论】:

$_date[0] 包含什么? up.php 中有什么? 我们能看到 PHP 表单 up.php 吗? 你是怎么得到-1.3333的? SELECT COUNT(date_field)?? 试试&lt;?php echo htmlentities( $_date[0] ); ?&gt; 我编辑了描述 :) $_date[0] 包含 04/06 - 25/06 【参考方案1】:
mysql_query("UPDATE `price` SET `_date`='".mysql_real_escape_string(trim($_POST["date0"]))."' WHERE `id`=0") or die(mysql_error());

因为 _date 是一个文本字段,而 mysql_real_escape_string 是为了安全

【讨论】:

您引用的是日期吗?我也添加了 mysql_real_escape_string 。先回显sql,看看你在做什么。 $sql=".....";回声 $sql; mysql_query($sql);

以上是关于向 MySQL (PHP) 添加值时防止在输入字段中执行数学表达式的主要内容,如果未能解决你的问题,请参考以下文章

Mysql - 防止重复输入字段中的增量值

修改输入值时如何防止光标移动?

使输入字段在包含值时设置样式

如何向mysql数据库表中添加一个变量字段?

Select2 - 选项项中的自定义输入字段,防止点击事件

向 Firebase 实时数据库添加新值时如何保存当前日期/时间