我在编写注册表时遇到问题,数据库应该连接(它没有丢失任何错误),但它只是没有说什么,所以我不知道如何解决这个问题。 它尚未完成,但我现在需要首先解决数据库问题,如果你帮助我,我将非常感激
<?php
session_start();
include "_DB.php";
if($_POST["btnODESLAT"])
{
$db = new PDO(
"mysql:host=" .dbserver. ";dbname=" .dbname,dbuser,dbpass,
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8"
)
);
$pass = htmlspecialchars($_POST["pass"]);
$pass2 = htmlspecialchars($_POST["pass2"]);
$email = htmlspecialchars($_POST["email"]);
$nick = htmlspecialchars($_POST["nick"]);
$sex = htmlspecialchars($_POST["sex"]);
if($pass == $pass2)
{
$check_nick = $db->query("SELECT * FROM tblOSOBA WHERE NICK = '$nick'");
$check2_nick = $check_nick->fetchAll(PDO::FETCH_ASSOC);
foreach($check2_nick as $check3_nick)
{
$check_final_nick = $check3_nick["COUNT(*)"];
}
}
if($check_final_nick == "0")
{
$insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `POHLAVI_ID`, `EMAIL`, `POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '".$_POST["sex"]."', '$email', $sex)";
$db->exec($insert_user);
$final= $db->query("SELECT * FROM tblOSOBA WHERE NICK='".$_POST["nick"]."'");
$results = $final->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $result)
{
$_SESSION["id_user"] = $result["ID_OSOBA"];
}
$_SESSION["login"] = "101010";
}
else{
echo "huehue";
}
}
echo "
<HTML>
<HEAD>
<META http-equiv='content-type' content='text/html; charset=UTF-8'>
</HEAD>
<BODY>
<FORM id='sidebar' action='".$_SERVER['PHP_SELF']."' method='POST'>
<INPUT type='text' placeholder='Nick' name='nick'><BR>
<INPUT type='password' placeholder='Pass' name='pass'><BR>
<INPUT type='password' placeholder='Pass' name='pass2'><BR>
<INPUT type='text' placeholder='Email' name='email'><BR>
<p>Pohlaví<p><BR>
<INPUT type='radio' name='sex' value='2'>Muž<BR>
<INPUT type='radio' name='sex' value='1'>Žena<BR>
<INPUT type='submit' name='btnODESLAT' value='Odeslat'>
</FORM>
</BODY>
</HTML>
";
?>
答案 0 :(得分:0)
您已复制了一列。
$insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `POHLAVI_ID`, `EMAIL`, `POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '".$_POST["sex"]."', '$email', $sex)";
$db->exec($insert_user);
应该只有1个POHLAVI_ID实例
$insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `EMAIL`, `POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '$email', $sex)";
$db->exec($insert_user);
顺便说一下,PDO有一个内置的方法来获取最后一个插入ID。您可以替换整个块
$final= $db->query("SELECT * FROM tblOSOBA WHERE NICK='".$_POST["nick"]."'");
$results = $final->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $result)
{
$_SESSION["id_user"] = $result["ID_OSOBA"];
}
使用:
$_SESSION['id_user'] = $db->lastInsertId();
答案 1 :(得分:0)
我已经删除了没有正常工作的Email&amp;尼克检查,它似乎工作。我不知道那个错误是什么,但它现在似乎有用了
<?php
session_start();
include "_DB.php";
if($_POST["btnODESLAT"])
{
$db = new PDO(
"mysql:host=" .dbserver. ";dbname=" .dbname,dbuser,dbpass,
array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET utf8"
)
);
$pass = htmlspecialchars($_POST["pass"]);
$pass2 = htmlspecialchars($_POST["pass2"]);
$email = htmlspecialchars($_POST["email"]);
$nick = htmlspecialchars($_POST["nick"]);
$sex = htmlspecialchars($_POST["sex"]);
if($pass == $pass2)
{
$insert_user = "INSERT INTO `tblOSOBA`(`ID_OSOBA`, `NICK`, `HESLO`, `EMAIL`,`POHLAVI_ID`) VALUES (NULL, '$nick', '".md5($pass)."', '$email', $sex)";
$db->query($insert_user);
$final= $db->query("SELECT * FROM tblOSOBA WHERE NICK='".$_POST["nick"]."'");
$results = $final->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $result)
{
$_SESSION["id_user"] = $result["ID_OSOBA"];
}
$_SESSION["login"] = "101010";
}
else{
echo "huehue";
}
}
echo "
<HTML>
<HEAD>
<META http-equiv='content-type' content='text/html; charset=UTF-8'>
</HEAD>
<BODY>
<FORM id='sidebar' action='".$_SERVER['PHP_SELF']."' method='POST'>
<INPUT type='text' placeholder='Nick' name='nick'><BR>
<INPUT type='password' placeholder='Pass' name='pass'><BR>
<INPUT type='password' placeholder='Pass' name='pass2'><BR>
<INPUT type='text' placeholder='Email' name='email'><BR>
<p>Pohlaví<p><BR>
<INPUT type='radio' name='sex' value='2'>Muž<BR>
<INPUT type='radio' name='sex' value='1'>Žena<BR>
<INPUT type='submit' name='btnODESLAT' value='Odeslat'>
</FORM>
</BODY>
</HTML>
";
?>