PHP / MySQL: почему мой запрос не работает?

я нахожусь на облаке 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
}
}
?>

0

Решение

Вы связываете только параметр электронной почты, вам не нужно 3 «s»

$reqVerif->bind_param("sss",$email);

пытаться:

$reqVerif->bind_param("s",$email);
1

Другие решения

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();
1

По вопросам рекламы [email protected]