【发布时间】:2014-06-14 17:32:06
【问题描述】:
我的数据库中的表设计如下,
AID INT(10) AUTO_INCREMENT
ID INT(20)
DATA VARCHAR(50)
Engine = MyISAM
我制作了一个表单,以便将数据发布到执行 SQL 查询的函数。
<form method="post" action="test.php" >
<input type="text" name="id" /><BR/>
<input type="text" name="val1" /><BR/>
<input type="text" name="val2" /><BR/>
<input type="text" name="val3" /><BR/>
<input type="submit" name= "t" value="submit"/>
</form>
排列并回显结果:
if (isset($_POST['t'])){
foreach(array($_POST) as $data) {
echo send($data);
}
};
这里是函数:
function send($data){
//MySQL connected
$do = $sql->prepare("SELECT id, data FROM test WHERE id =?");
$do->bindValue(1, $data['id'], PDO::PARAM_INT);
$do -> execute() ;
if ( $do -> rowCount()=== 1){
$getData = $do -> fetch();
return $getData['data'];
}
}
当 POST 表单在 'id' 字段中使用 '1' 时,函数返回从表中获取的 'data'。
但是,当使用 '1aaxxacac' POST 表单时,该函数返回相同的结果。
我已经尝试过使用:
$do -> execute(array(':id'=>$data['id]));
替换前一个,但仍然有同样的问题。 如果我在 MySQL 中将 ID 字段从 INT 更改为 CHAR 或 VARCHAR,情况就解决了。
真诚地希望你们能帮我解决这个问题。
谢谢!
【问题讨论】:
-
@Musa 是的,我应该使用 is_numeric 吗?但是如何将它与我的 foreach 集成?我发现一些网站认为 is_numeric 性能不佳。不过,谢谢
-
从您的书签中删除这些网站,或者 - 更好的是 - 在您的防火墙上禁止它们