我在cloud9上进行了一个Web项目,我可以使用Mysqli命令插入我在MySQL的数据库中。但是,当我尝试从数据库中选择数据时,我的查询不起作用:( echo $ result不打印任何内容)。有什么想法吗?
使用PDO命令可能更好吗?
<?php
//connect
$servername = getenv('IP');
$username = getenv('C9_USER');
$password = "";
$database = "myproject";
$dbport = 3306;
// Create connection
$bdd = new mysqli($servername, $username, $password, $database, $dbport);
// Check connection
if ($bdd->connect_error) {
die("Connection failed: " . $bdd->connect_error);
}
echo "Connected successfully (".$bdd->host_info.")";
$pseudonyme = $_POST['pseudo'];
$mot_de_passe = $_POST['mdp'];
$confirm_mdp = $_POST['confirm_mdp'];
$email = $_POST['email'];
if($mot_de_passe == $confirm_mdp)
{
$mot_de_passe = crypt($mdp);
$pseudonyme = htmlspecialchars($Pseudonyme);
//verifying is user mail is already in base
$reqVerif = $bdd->prepare('SELECT ID_utilisateur FROM utilisateurs WHERE Adresse_email = ?');
$reqVerif->bind_param("sss",$email);
$reqVerif->execute();
$result = $reqVerif->fetch();
//user already exist in DB
if($result)
{
?>
<div class="nouveau_membre" >
<p>You already have a account...</p>
</div>
<?php
}
else
{
//in case of new user
$req = $bdd->prepare('INSERT INTO utilisateurs(Pseudonyme, Mot_de_passe, Adresse_email, Date_inscription) VALUES(?, ?, ?, CURDATE())');
$req->bind_param("sss", $pseudonyme, $mot_de_passe, $email);
$req->execute();
?>
<div class="nouveau_membre" >
<p>New USER !</p>
</div>
<?php
}
}
?>
答案 0 :(得分:1)
您只绑定了电子邮件参数,您不需要3&#34; s&#34;
$reqVerif->bind_param("sss",$email);
尝试:
$reqVerif->bind_param("s",$email);
答案 1 :(得分:1)
;
您只在此处选择一个字符串,因此只列出一次:
break1: ;
对于您的选择,最简单的方法是绑定结果,如下所示:
$reqVerif = $bdd->prepare('SELECT ID_utilisateur FROM utilisateurs WHERE Adresse_email = ?');
然后你可以像这样回应你的结果:
$reqVerif->bind_param("s",$email);
$reqVerif->execute();
然后关闭你的对象:
$reqVerif->bind_result($ID_utilisateur);
$reqVerif->fetch();
(当然你可以像上面那样做;我只是将其简化为元素)
编辑:如果您想检查是否有任何行(它出现的是什么行),您需要在执行此行后存储结果:
echo $ID_utilisateur;
然后你可以这样做:
$reqVerif->close();
然后检查它:
$reqVerif->store_result();
然后你可以在关闭对象之前释放结果:
$num=$reqVerif->num_rows;