я нахожусь на облаке 9 для веб-проекта, я могу вставить в свою базу данных в MySQL с помощью команды Mysqli. Но когда я пытаюсь выбрать данные из базы данных, мой запрос не работает: (результат echo $ ничего не печатает). Есть идеи ?
Может быть, лучше использовать команду 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
}
}
?>
Вы связываете только параметр электронной почты, вам не нужно 3 «s»
$reqVerif->bind_param("sss",$email);
пытаться:
$reqVerif->bind_param("s",$email);
MySQL подготовленные заявления должны работать. Просто измените пару строк,
$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;
а затем проверьте это:
if ($num > 0) {
echo $ID_utilisateur;
}
и затем вы можете освободить результат, прежде чем закрыть объект с помощью этого:
$reqVerif->free_result;
$reqVerif->close();