так что в основном я хочу создать онлайн-словарь, слово, которое нужно искать, вводится вводом, и я хочу сделать так, чтобы, если он не может найти слово + определение в 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, но я исправлю это позже.
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";
}
попробуйте обернуть неопределенные переменные в 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;
}
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");
?>
Вы должны проверить свои переменные, если они имеют значение или нет
Переменные $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()
здесь бессмысленно, так как мы уже создали (установили) переменные сами.
empty()
функция — http://php.net/manual/en/function.empty.phpmysqli
— http://php.net/manual/en/mysqli.quickstart.dual-interface.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'];
}
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");