Проверьте, существует ли значение в строке MySQL - PullRequest
5 голосов
/ 27 января 2011

У меня есть переменная php: $foo

Моя таблица MySQL с именем data имеет следующую структуру:

id    var    header

1     zj3     http://google.com

Я хотел бы проверить, все ли $fooготов в var строке.

Если это так, я хотел бы повторить header ("http://google.com")

Как бы вы подошли к этому?

Заранее спасибо, пожалуйста, спроситеесли требуется какое-либо разъяснение!

Ответы [ 6 ]

9 голосов
/ 27 января 2011

Ваш запрос должен быть:

SELECT `header` FROM `data` WHERE `var` = '$foo'

Это вернет все заголовки со значением var $foo.

$db = mysqli_connect('localhost', 'username', 'password', 'database');
if($query = mysqli_query($db, "SELECT `header` FROM `data` WHERE `var` = '$foo'")){
  while($row = mysqli_fetch_assoc($query)){
    echo $row['header'];
  }
  mysqli_free_result($query);
}
1 голос
/ 27 января 2011

Это совсем не сложно, если я правильно понимаю, это должно вам помочь.

// Query Variable / Contains you database query information
$results = $query;

// Loop through like so if the results are returned as an array
foreach($results as $result)
{
    if(!$result['var'])
        echo $result['header'];
}

// Loop through like so if the results are returned as an object
foreach($results as $result)
{
    if(!$result->var)
        echo $result->header;
}
1 голос
/ 27 января 2011

Вы спрашиваете, соответствует ли $foo любое полей в data или $foo=some_field?Здесь, если вы хотите $foo==var.

$foo='somevalue';
$query="SELECT id, var, header FROM `data` WHERE var='$foo'";
$result=mysqli_query($query);
if($result->num_rows==0) 
  $loc= 'http://google.com';//default value for when there is no row that matches $foo
}else{
  $row=$result->fetch_assoc(); //more than one row is useless since the first header('Location: x') command sends the browser to a new page and away from your script.
  $loc=$row['header'];

}
header ("Location: $loc);
exit;

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

1 голос
/ 27 января 2011

первое подключение к БД

$query = mysql_query("SELECT var, header FROM data WHERE id='1'") or die(mysql_error());
while($row = mysql_fetch_assoc($query)){
    if($foo == $row['var']){
        echo $row['header'];
    }
}

РЕДАКТИРОВАТЬ: изменено утверждение равенства на основе вашего редактирования

0 голосов
/ 14 мая 2015

Вот шаблон для всех вопросов "существует ли он".

Это единственное, что на самом деле работало для меня до сих пор и не считается устаревшим.

if ($query = mysqli_query($link, "SELECT header FROM data WHERE var = '$foo'")) {

        $header = mysqli_fetch_assoc($query);

        if ($header) {

            // The variable with value $foo exists.
        }
        else {

            // The variable with value $foo doesn't exist.
        }
    }
    else {

        // The query didn't execute for some reason. (Dammit Obama!)
    }

ВНИМАНИЕ!

Даже если переменная НЕ СУЩЕСТВУЕТ сравнение $ query и mysqli_query () всегда будет возвращать TRUE .

Единственный способ - что случилось со мной - для сравнения вернуть FALSE - из-за синтаксической ошибки в вашем запросе.

Я не знаю, почему это сработало для парня, который написал принятый ответ, может быть, это обновление или, возможно, у него была синтаксическая ошибка и он был настолько уверен, что не проверял, может ли это когда-либо быть ИСТИНА .

Вот комментарий, который кто-то сделал для исправления его синтаксиса:

"Добавить еще один) перед {в первой строке"

Итак, принятый ответ НЕПРАВИЛЬНО!

0 голосов
/ 27 января 2011

Вы просто хотите узнать, находится ли значение $ var в этом столбце (любая строка)?

SELECT COUNT(id) FROM data WHERE var = ?;

Результатом будет количество строк, для которых поле var содержит значение$ var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...