首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查MySQL中是否存在记录(使用PHP)?

问检查MySQL中是否存在记录(使用PHP)?
EN

Stack Overflow用户
提问于 2012-01-05 16:49:38
回答 3查看 1.6K关注 0票数 0

我用phpMyAdmin创建了一个小型数据库(1个表)。我要检查的字段之一是"Name“。我想通过PHP验证数据库中是否存在用户在表单中键入的名称。在html中会出现来自DB的名称列表,但用户可能会在表单中键入错误的名称。问题在于它是否存在的答案是不同的。

我有两个PHP文件:Connection.php和welcome.php

连接

代码语言:javascript
复制
 <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>

和欢迎

代码语言:javascript
复制
 <?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';
 }
 }
 }
 ?>

先谢谢你^_-

EN

回答 3

Stack Overflow用户

发布于 2012-01-05 17:01:07

代码语言:javascript
复制
<?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
    }
}

上面的脚本将工作,并将保护您的脚本免受SQL注入使用内置的mysql_real_escape_string方法。在以这种方式验证数据时,我还建议不要使用通配符(*)选择器,因为查询任何未使用的其他信息是浪费资源。

票数 2
EN

Stack Overflow用户

发布于 2012-01-05 16:56:08

不要从表中获取所有数据来比较名称。这样做:

代码语言:javascript
复制
$sql=mysql_query("SELECT * FROM persoana where name like '$name%'");

只有当你有匹配时,你才能得到结果。

票数 0
EN

Stack Overflow用户

发布于 2012-01-05 17:11:41

我将遵循这些步骤--高层次的步骤。

1-使用javascript在调用DB之前首先检查客户端是否输入了某些内容。您可以在javascript中使用过滤器来检查表单字段。

2-如果您验证输入了什么*有用的内容--将表单字段值传递给将解析该值的另一个页面或对象,然后查询该表。

3-对包含数据的db表列使用解析值。如果找到记录,请返回它们。

使用SQL注入技术可以防止用户恶意地在表单字段中键入某种邪恶的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8746312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档