Anahtarlama değil koşullu hazırlanmış deyimi

2 Cevap php

Ben adı alanı belirli bir kullanıcı adı veya güncelleme verilerinden bir adı varsa boş olması durumunda veri eklemek içindir aşağıdaki PHP kodu var. Şu vea, insert önceden iyi çalışıyordu, ancak bu güncelleştirme fıkra geçmek asla.

Şimdi ise, insert fıkra hiçbir belirgin nedeni, benim test değişkeni tanımak için başarısız olur. Ben olsun hataları şunlardır:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given

ve

Notice: Undefined variable: checkUsername

oldukça yakın olan.

if($cmd=="submitinfo"){

$usernameQuery = "select username from USERS where username = $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);
}
}

Bir güncelleme yapmak için tercih edilen bir yol ya da kullanıcı adı alanına karşı eşleşen $ username içeriğine bağlı olarak bir ekleme nedir?

2 Cevap

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given

Bu hata mesajı mı? Senin sorunun bu satırı olduğunu düşünüyorum:

$xblah = $con->query($usernameQuery);

$ Xblah bir var_dump yapın. Ben sorgu başarısız olduğunu sanıyorum. Eğer zorlama değil, var muhtemelen çünkü $username girişlerinizden. Ve kök aşk için, ondan kaçmak için emin olun! mysql_real_escape_string() ne istediğinizi yapacak.

MySQL kullanıyorsanız ve adı benzersiz ise, bu kullanışlı SQL kullanabilirsiniz:

INSERT INTO users (?, ?, ...) ON
DUPLICATE KEY UPDATE firstname=?,
lastname=?, ...)

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html Tam belgelerine bakın.