这是我的第一个问题所以请不要烤我。
我目前正在学校开发一个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;
}
}
}
答案 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做某事,那么这应该可以帮助你。