比较数据库条目与表单

时间:2015-10-08 15:30:06

标签: php jquery mysql

这是我的第一个问题所以请不要烤我。

我目前正在学校开发一个html,php,mysql项目,我想知道是否可以将html中的表单条目与我的数据库中的表进行比较以获取其id。

表格看起来像是 女士prename:""
姓氏:" "

表格:
ID:' 1'
女士prename:' ABC'
姓氏:' xyz'

现在,如果有人填写表单并提交,我想将其发送到查看数据库的函数,如果找到匹配项,则返回ID。

感谢您的想法!

编辑:你想要的就是我到目前为止所获得的内容包括来自@Patchesoft的代码 仍然没有工作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>


<form action="db_class.php" method="post">
    <p>Vorname: <input type="text" name="prename"/></p>
    <p>Nachname: <input type="text" name="last_name"/></p>
    <input type="submit" name="submit" value="Start"/>
</form>  
</body>
</html>

对于PHP部分,我们的老师为我们提供了一个具有许多功能的类,可以从数据库中添加和选择等。最重要的是:

<?php 


DB::init(...); // The connection is ok. I just delted the login data for purpose

$prename = mysqli_real_escape_string($_POST['prename']);
$lastname = mysqli_real_escape_string($_POST['last_name']);

$result = mysqli_query("SELECT `ID` FROM `user` WHERE `prename` = '" . $prename . "' AND `last_name` = '" . $lastname . "' ");
if(mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_array($result);
    return $row['ID'];
}


echo $result;

class DB {

    public static $db = null;
    public static $insertID;

    public static function init($dbHost, $dbUser, $dbPassword, $dbName) {
        self::$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
        if (self::$db->connect_errno) {
            $_SESSION['errors'][] = "MySQL connection failed: ". self::$db->connect_error;
        }
        self::$db->query("SET NAMES utf8;");
    }

    public static function select($table, $columns = '*', $key=null, $where = null, $limit = null, $debug = false) {
        $sql = "SELECT " . self::generateColumnList($columns) . " FROM $table";
        if ($where != null) {
            $sql .= " WHERE ".$where;
        }
        if ($limit != null) {
            $sql .= " LIMIT ".$limit;
        }
        if ($debug == true) {
            $_SESSION['debug'][] = __FUNCTION__ . ': $sql is <strong>' . $sql . '</strong>';
        }

        $result = self::$db->query($sql);
        if (self::$db->errno) {
            $_SESSION['errors'][] = '<p>select failed: ' . self::$db->error . '<br> statement was: <strong>' . $sql . '</strong></p>';
            return array();
        } else {
            $ret = array();
            while ($row = $result->fetch_assoc()) {
                if (!empty($key)){
                    $ret[$row['id']] = $row;
                }
                else
                    $ret[] = $row;
            }
            if (count($ret) == 1) {
                return $ret[0];
            } else {
                return $ret;
            }
        }
    } 
    public static function select2($sql, $debug = false) {
        $result = self::$db->query($sql);
        if (self::$db->errno) {
            $_SESSION['errors'][] = '<p>select failed: ' . self::$db->error . '<br> statement was: <strong>' . $sql . '</strong></p>';
            return array();
        } else {
            $ret = array();
            while ($row = $result->fetch_assoc()) {
                if (!empty($key)){
                    $ret[$row['id']] = $row;
                }
                else
                    $ret[] = $row;
            }
            if (count($ret) == 1) {
                return $ret[0];
            } else {
                return $ret;
            }
        }
    }

1 个答案:

答案 0 :(得分:2)

您需要将表单输入字段转换为变量,然后创建一个检查数据库中数据的SQL查询。这很简单,但对于初学者来说还有其他一些事情需要考虑。

1)消除你的输入。这对于防止SQL注入攻击非常重要。简单的答案是通过mysql_real_escape_string()函数运行它来清理变量,但有比这更好的方法。查找准备好的陈述。

2)连接到您的数据库。在对数据库进行任何查询之前,需要连接到它。这很简单,但你需要查看如何做到这一点。

对于某些基本代码,请尝试:

$prename = mysqli_real_escape_string($_POST['prename']);
$lastname = mysqli_real_escape_string($_POST['lastname']);

// Now check to see if the values match in your database
// This assumes you have already written your connecting to database code
$result = mysqli_query("SELECT `ID` FROM `table_name` WHERE `prename` = '" . $prename . "' AND `lastname` = '" . $lastname . "' ");
if(mysqli_num_rows($result) > 0) {
    $row = mysqli_fetch_array($result);
    return $row['ID'];   
}

这是一个非常基本的脚本 - 它是我开始学习的东西。使用PDO数据库驱动程序有更好的方法。但是,如果你只是学习用PHP和MySQL做某事,那么这应该可以帮助你。