向 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)??
试试<?php echo htmlentities( $_date[0] ); ?>
我编辑了描述 :) $_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) 添加值时防止在输入字段中执行数学表达式的主要内容,如果未能解决你的问题,请参考以下文章