Проверьте, существует ли значение В строке MySQL
У меня есть переменная php: $foo
Моя таблица MySQL под названием data
имеет следующую структуру:
id var header
1 zj3 http://google.com
Я хотел бы проверить, готово ли $foo
все в строке var
.
Если это так, я хотел бы повторить header
("http://google.com ")
Как бы вы подошли к этому?
Заранее спасибо, пожалуйста, спросите, нужны ли какие-либо разъяснения!
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);
}
Сначала подключитесь к базе данных
$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'];
}
}
ИЗМЕНИТЬ: изменено утверждение о равенстве на основе вашего редактирования
Это совсем не сложно, если я правильно понимаю, то это должно вам помочь.
// 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;
}
Вы спрашиваете, соответствует ли $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. Вышесказанное для этого не сработает.
Вы просто хотите знать, находится ли значение $var где-либо в этом столбце (в любой строке(строках))?
SELECT COUNT(id) FROM data WHERE var = ?;
Результатом будет количество строк, для которых поле var содержит значение $var.
Вот шаблон для всех вопросов "существует ли это".
Это единственное, что на самом деле работало для меня до сих пор и не устарело.
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 из-за синтаксической ошибки в вашем запрос.
Я не знаю, почему это сработало для парня, который написал принятый ответ, может быть, это обновление или, может быть, у него была синтаксическая ошибка, и он был настолько уверен, что не проверял, может ли это когда-либо быть ПРАВДОЙ.
Вот комментарий, который кто-то сделал для исправления его синтаксиса:
" Добавьте еще один) перед {в первой строке"
Итак, принятый ответ НЕВЕРЕН!