словарь — замена PHP & quot; неопределенная переменная & quot; ошибка?

так что в основном я хочу создать онлайн-словарь, слово, которое нужно искать, вводится вводом, и я хочу сделать так, чтобы, если он не может найти слово + определение в db, сказать сообщение типа «Мы не могли» не могу найти какое-либо определение «или что-то подобное, в моем коде, потому что он не может его найти, он означает» неопределенная переменная «

<?php
include ("header.php");
$search = $_POST['se'];
include ("connect.php");

$dictionary=mysqli_query($con,"SELECT * FROM `dictionary` WHERE word = '$search'");

while($row = mysqli_fetch_array( $dictionary )) {
$word=$row['word'];
$description=$row['definition'];
}
echo "<div class=\"webResult\">
<h2>$word</h2>
<p>$description</p>
</div>";
include ("footer.php");
?>

П.С .: Я знаю, что мой код уязвим для SQLi, но я исправлю это позже.

0

Решение

if($row = mysqli_fetch_array( $dictionary )) {
$word=$row['word'];
$description=$row['definition'];

echo "<div class=\"webResult\">
<h2>$word</h2>
<p>$description</p>
</div>";
} else {
echo "$search not found";
}
0

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

попробуйте обернуть неопределенные переменные в isset

if (isset($word) && isset($description)) {
echo "<div class=\"webResult\">
<h2>$word</h2>
<p>$description</p>
</div>";
}
else {
echo "Nothing found";
}

То же самое касается $search = $_POST['se'];

if(!isset($_POST['se'])) {
echo "Nothing found";
exit;
}
1

while($row = mysqli_fetch_array( $dictionary )) {

$word=$row['word'];
$description=$row['definition'];

}
if(!empty($word) && !empty($description)){

echo '<div class=\"webResult\">';
echo '<h2>$word</h2>';
echo '<p>$description</p>';
echo '</div>";

}else{
echo 'could not find your word';
}include ("footer.php");
?>

Вы должны проверить свои переменные, если они имеют значение или нет

0

Переменные $word а также $description сначала создаются внутри while петля. Это означает, что у них нет объем вне этого. Это должно быть наиболее вероятной причиной, так как вы получаете variable not defined ошибка.

Здесь есть несколько вариантов.

Один, Вы могли бы создать эти переменные вне while цикл, а затем назначьте им новые значения, как вы делаете сейчас. Вот как может выглядеть ваш код, если вы решите сделать это следующим образом:

$search = $con->escape_string($_POST['se']);
$dictionary = $con->query("SELECT * FROM `dictionary` WHERE word = '$search'");
$word = "";
$description = "";

while($row = $dictionary->fetch_assoc())
{
$word = $row['word'];
$description = $row['definition'];
}

if (!empty($word) && !empty($description))
{
echo '<div class="webResult"><h2>' . $word . '</h2><p>' . $description . '</p></div>';
}
else
{
echo "We couldn't find any definition";
}

Это будет работать для вас, если у вас есть несколько результатов в возвращенном mysqli_resourceи хотите использовать последний в списке.

Два, если вы, вероятно, получите только один возвращенный результат, или если вы просто хотите использовать первый результат в списке, вы можете получить echo заявление внутри if оператор, который проверяет, верен ли верный результат. Например:

$search = $con->escape_string($_POST['se']);
$dictionary = $con->query("SELECT * FROM `dictionary` WHERE word = '$search'");
$word = "";
$description = "";

$row = $dictionary->fetch_assoc();

if($row)
{
$word = $row['word'];
$description = $row['definition'];

if (!empty($word) && !empty($description))
{
echo '<div class="webResult"><h2>' . $word . '</h2><p>' . $description . '</p></div>';
}
else
{
echo "We couldn't find any definition";
}
}

Замечания:

В приведенных выше примерах мы используем !empty() проверить переменные. Это потому что isset() здесь бессмысленно, так как мы уже создали (установили) переменные сами.

Вещи, чтобы прочитать:

0

Попробуй это:

include ("header.php");
$search = $_POST['se'];
include ("connect.php");

$dictionary=mysqli_query($con,"SELECT * FROM `dictionary` WHERE word = '$search'");while($row = mysqli_fetch_array( $dictionary )) {
$word=$row['word'];
$description=$row['definition'];
}

if(isset($word)){
echo "<div class=\"webResult\">
<h2>$word</h2>
<p>$description</p>
</div>";
}
else{
echo "We couldn't find any definition";
}
include ("footer.php");
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector