PHP &

3 Cevap php

Ben aşağıda listelenen bu hat üzerinde Array to string conversion error bir aşağıdaki hatayı alıyorum. Ben nasıl bu sorunu düzeltebilirim?

$skill = explode('', $_POST['skill']);

Burada PHP & olduğunu MySQL kodu.

$skill = explode('', $_POST['skill']);
$experience = explode('', $_POST['experience']);
$years = explode('', $_POST['years']);

for ($s = 0; $s < count($skill); $s++){
    for ($x = 0; $x < count($experience); $x++){
        for ($g = 0; $g < count($years); $g++){

            if (mysqli_num_rows($dbc) == 0) {
                    $mysqli = mysqli_connect("localhost", "root", "", "sitename");
                    $dbc = mysqli_query($mysqli,"INSERT INTO learned_skills (user_id, skill, experience, years, date_created) 
                                                 VALUES ('" . $user_id . "', '" . $skill[$s] . "', '" . $experience[$x] . "', '" . $years[$g] . "', NOW())");
            }

            if ($dbc == TRUE) {
                    $dbc = mysqli_query($mysqli,"UPDATE learned_skills 
                                                 SET skill = '$skill', experience = '$experience', years = '$years', date_created = NOW()
                                                 WHERE user_id = '$user_id'");

                    echo '<p class="changes-saved">Your changes have been saved!</p>';
            }

            if (!$dbc) {
                    print mysqli_error($mysqli);
                    return;
            }

        }
    }
}

Burada HTML kodudur.

<li><label for="skill">Skills: </label><input type="text" name="skill[]" id="skill[]" size="25" maxlength="255" />
<label for="experience">Experience: </label>
<?php

echo '<select id="experience[]" name="experience[]">' . "\n";
  foreach($experience_options as $option) {
    if ($option == $experience) {
      echo '<option value="' . stripslashes(htmlentities(strip_tags($option))) . '" selected="selected">' . stripslashes(htmlentities(strip_tags($option))) . '</option>' . "\n";
    } else {
      echo '<option value="'. stripslashes(htmlentities(strip_tags($option))) . '">' . stripslashes(htmlentities(strip_tags($option))) . '</option>'."\n";
    }
  }
echo '</select>';

?>
<label for="years">Years: </label>
<?php

echo '<select id="years[]" name="years[]">' . "\n";
  foreach($year_options as $option) {
    if ($option == $years) {
      echo '<option value="' . stripslashes(htmlentities(strip_tags($option))) . '" selected="selected">' . stripslashes(htmlentities(strip_tags($option))) . '</option>' . "\n";
    } else {
      echo '<option value="'. stripslashes(htmlentities(strip_tags($option))) . '">' . stripslashes(htmlentities(strip_tags($option))) . '</option>'."\n";
    }
  }
echo '</select></li>';

3 Cevap

Docs tarafından belirtildiği gibi, explode with an empty delimiter always returns FALSE. What are you trying to do. What does $_POST['skill'] gibi görünüyorsun?

Ben söylemek istiyorum

$skill = explode('', $_POST['skill']);

$_POST['skill'] bir dizidir. explode() 'nin 2 argümanı bir dize ya bence bir dizeye dönüştürebilirsiniz şey bekliyor. Boş bir dize değişkeni ile bölmek için çalışırsanız muhtemelen de size baş ağrısı verir.

Giriş alanının adınız skill[], çünkü ben de bunu biliyorum.

PHP bir diziye sonunda [] ile herhangi bir ad dönecek. Hatta parantez arasındaki gibi tuşu belirleyebilirsiniz.

Değişkeni zaten bir dizidir Yani muhtemelen, o satır atlayabilirsiniz. Eğer bir dizi olmak istemiyorsanız, isim niteliği kapalı [] bırakın.

Bu metin form elemanının:

<label for="skill">Skills: </label>
<input type="text" name="skill[]" id="skill[]" size="25" maxlength="255" />

Eğer "beceri" olarak adlandırılan bir dizi kullanıcı tarafından sağlanan metin değeri saklamak için PHP sordunuz. (Daha sonra patlayabilir) olarak basit bir dizge alanını saklamak için, köşeli parantez kaldırın:

<label for="skill">Skills: </label>
<input type="text" name="skill" id="skill" size="25" maxlength="255" />

Bu dizi hatayı düzeltmek gerekir. Başkaları tarafından işaret olarak başka not, bu hat patlayabilir boş parametre muhtemelen doğru değil:

$skill = explode('', $_POST['skill']);

Kullanıcı tarafından sağlanan beceri virgülle ayrılmalıdır? Eğer öyleyse, belki de bu ne istediğini?

$skill = explode(',', $_POST['skill']);

Bu yardımcı olur umarım!