Проверьте, существует ли значение В строке MySQL


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

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

id    var    header

1     zj3     http://google.com

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

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

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

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

Author: Trufa, 2011-01-27

6 answers

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

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);
}
 9
Author: Rocket Hazmat, 2011-01-27 21:39:39

Сначала подключитесь к базе данных

$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'];
    }
}

ИЗМЕНИТЬ: изменено утверждение о равенстве на основе вашего редактирования

 1
Author: heymrcarter, 2011-01-27 20:19:13

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

// 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
Author: brenjt, 2011-01-27 20:22:48

Вы спрашиваете, соответствует ли $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
Author: dnagirl, 2011-01-27 20:25:40

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

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

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

 0
Author: Mike, 2012-06-20 11:29:01

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

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

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
Author: Vulkan, 2015-05-14 17:23:13