J'ai le code conditionnel suivant, qui insérera un nouvel enregistrement si un enregistrement avec le nom d'utilisateur approprié n'existe pas, et mettra à jour l'enregistrement s'il existe. Cela fonctionne bien.sql - mise à jour sans surcharger les informations existantes
Cependant, à l'heure actuelle, si j'insère un nouvel enregistrement, et que j'insère le prénom et le nom, et peut-être des détails d'adresse avec des informations téléphoniques vides, c'est correct. Si je souhaite ensuite mettre à jour l'enregistrement avec seulement l'enregistrement téléphonique, le nom et l'adresse sont remplacés par rien.
Ce que je voudrais savoir, c'est s'il est possible d'avoir un moyen facile de remplir mon formulaire php html pour mettre à jour les informations, avec le contenu du champ que je vais mettre à jour? J'utilise
<input type="text" name="uniquename" />
Pour obtenir l'entrée d'utilisateur, qui est ensuite transmis à une fonction javascript qui est ensuite repassé au code php ci-dessous. Si ce n'est pas possible, existe-t-il un moyen facile de travailler un peu de magie sql/php, pour mettre à jour uniquement un champ correspondant à l'utilisateur qui n'est pas vide?
$usernameQuery = "select username from USERS where username = '" . $con->escape_string($username) . "'";
$xblah = $con->query($usernameQuery);
while ($row = mysqli_fetch_assoc($xblah))
{
$checkUsername = $row['username'];
}
if ($checkUsername == null) {
$userQuery = "INSERT INTO USERS VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
if ($userInfo = $con->prepare($userQuery)) {
$userInfo->bind_param("ssssssssssssssssssss", $username, $firstname, $lastname, $flaggedauctions, $lastauction, $street1, $city1, $postcode1, $street2, $city2, $postcode2, $phone, $mobilephone, $fax, $email, $website, $bank, $banknumber, $accountnumber, $comments);
$userInfo->execute();
$userInfo->close();
echo "true";
} else {
echo "false";
}
print_r($con->error);
}
else if ($checkUsername == $username) {
$userQuery = "UPDATE USERS SET firstname = ?, lastname = ?, flaggedauctions = ?, lastauction = ?, street1 = ?, city1 = ?, postcode1 = ?, street2 = ?, city2 = ?, postcode2 = ?, phone = ?, mobilephone = ?, fax = ?, email = ?, website = ?, bank = ?, banknumber = ?, accoutnumber = ? WHERE username = ?";
if ($userInfo = $con->prepare($userQuery)) {
$userInfo->bind_param("sssssssssssssssssss", $firstname, $lastname, $flaggedauctions, $lastauction, $street1, $city1, $postcode1, $street2, $city2, $postcode2, $phone, $mobilephone, $fax, $email, $website, $bank, $banknumber, $accountnumber, $username);
$userInfo->execute();
$userInfo->close();
echo "true";
} else {
echo "false";
}
print_r($con->error);
}
Hmm, merci. Que se passe-t-il avec bindArgs? –
Ma compétence PHP est un peu rouillée mais je pense que vous pouvez passer $ bindArgs dans la fonction bind_param. Je crois que vous pouvez passer des tableaux dans la fonction d'arguments de nombre variable en PHP. – oscarkuo
donc ils sont deux solutions distinctes? Je voudrais juste avoir des bindARgs pour chaque variable? –