我有一个php变量:$foo
我的MySQL表名为data
,其结构如下:
id var header
1 zj3 http://google.com
我想检查变量
$foo
是否已经存在于var
行中。如果是,则希望输出
header("http://google.com")
。您会如何处理这个问题?
提前感谢,如果需要任何澄清,请问我!
您应该查询:
SELECT `header` FROM `data` WHERE `var` = '$foo'
这将返回所有具有$foo
值的var
头。
$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);
}
{
前面再加一个 )
。 - Andrew$query
与mysqli_query
进行比较。我将$query
设置为mysqli_query
,并检查分配(=
)的结果。如果mysqli_query
返回FALSE
,则if()
不会运行,否则它会运行。 - gen_Eric首先连接到数据库
$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'];
}
}
编辑:根据您的编辑更改了等式语句
mysql_connect
连接到数据库。 - gen_Eric你是在询问$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;
这并不难,如果我理解正确的话,这应该能帮到你。
// 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;
}
你只是想知道 $var 的值是否在该列中的任何行中出现过吗?
SELECT COUNT(id) FROM data WHERE 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是因为查询中存在语法错误。
我不知道为什么被接受的答案的作者能够成功,也许是更新了,或者他有语法错误,但非常自信,没有检查它是否可能是TRUE。
这是某人对他的语法进行更正的评论:
"在第一行的{前添加另一个)
因此,被接受的答案是错误的!