[英]Check existence of a record in MySQL(with PHP)?
我在phpMyAdmin中创建了一个小型数据库(1个表)。 我要检查的其中一个字段是“名称”。 我想通过PHP验证用户在表单中键入的名称是否存在于数据库中。 在html中显示来自DB的名称列表,但用户可能在表单中键入错误的名称。 问题在于答案是否存在变化。
我有2个PHP文件: Connection.php和welcome.php
连接
<html>
<head>
<title>Project</title>
</head>
<body>
<?php
mysql_connect("localhost","root","");
mysql_select_db("e-card");
$sql=mysql_query("SELECT * FROM person");
$dbname="name";
#$formula_adr="formula_adr";
#$adress="adr";
$line=mysql_fetch_assoc($sql);
echo'Choose a name to whom you send e-card:<br/><br/>';
echo $line[$dbname].'<br/>';
while($line=mysql_fetch_assoc($sql))
echo $line[$dbname].'<br/>';
?>
<form action="welcome.php" method="POST">
Nume: <input type="text" name="fname" />
<input type="submit" value="Verify existance in DB"/>
</form>
</body>
</html>
并欢迎 :
<?php
mysql_connect("localhost","root","");
mysql_select_db("e-card");
$sql=mysql_query("SELECT * FROM persoana");
$dbname="name";
$formula_adr="formula_adr";
$adresa="adr";
$linie=mysql_fetch_assoc($sql);
if ($_SERVER['REQUEST_METHOD']=='POST' and isset($_POST['fname']))
{
$name = $_POST['fname'];
while($line=mysql_fetch_assoc($sql))
{
if(strcmp($name,$line[$dbname]))
{
echo 'Found';
}
else
{
echo 'This name doesn't exist in DB';
}
}
}
?>
谢谢你提前^ _-
<?php
mysql_connect(HOST, USERNAME, PASSWORD);
mysql_select_db(DB_NAME);
if($_POST) {
$name = $_POST['fname'];
// check if name exists in db
$sql = "SELECT name FROM person WHERE name=' . mysql_real_escape_string($name) . '";
$query = mysql_query($sql);
if(mysql_num_rows($query) > 0) {
// user exists
} else {
// user does not exist
}
}
上面的脚本将起作用,并且还将使用内置的mysql_real_escape_string方法保护脚本免受SQL注入。 我还建议在以这种方式验证数据时不要使用通配符(*)选择器,因为查询任何未使用的其他信息会浪费资源。
不要从表中获取所有数据来比较名称。 这样做:
$sql=mysql_query("SELECT * FROM persoana where name like '$name%'");
只有在匹配时才会得到结果
我会按照这些步骤执行高级步骤。
1 - 在调用数据库之前,使用javascript初始检查客户端是否输入了某些内容。 您可以在javascript中使用过滤器来检查该表单字段。
2 - 如果验证输入了*有用的内容 - 将表单字段值传递给另一个将解析该值的页面或对象,然后查询该表。
3 - 对包含数据的db表列使用已解析的值。 如果找到记录,则返回它们。
使用SQL注入技术来防止可能在表单字段中键入邪恶内容的用户进行恶意打算。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.