我有点奇怪的问题。我试图通过自己创建的函数检查数据库中是否存在某个值,如此
function is_in_db($val,$row,$db){
$query = mysql_query("SELECT ".$row." FROM ".$db." WHERE ".$row." = '".$val."'");
if(mysql_num_rows($query)){
return true;
}else{
return false;
}
}
据我所知这是有效的(我在功能之外检查了它并回应了结果。它在那里工作正常。但是当我这样做时,它会不断显示'是'(它应该显示'否') )
if(is_in_db($_aGET,"c_link","fe_content")){
echo("yes");
}else{
echo("no");
}
所有变量都正常工作,我检查过了!
有人知道我在这里做错了吗?
修改 这是一些额外的信息。我的数据库看起来(简化)像这样:
Database: fe_content
+--------+--------+
| c_link | c_page |
+--------+--------+
| one | page 1 |
| two | page 2 |
| three | page 3 |
+-----------------+
我有以下网址www.domain.com/page/two
在page.php中,我有以下(仅限相关)代码:
if(!empty($_SERVER['PATH_INFO'])){
$_aGET = substr($_SERVER['PATH_INFO'], 1);
$_aGET = explode('/', $_aGET);
}
function is_in_table ($val, $col, $table) {
return (mysql_num_rows(mysql_query("SELECT `$col` FROM `$table` WHERE `$col` = '$val' LIMIT 1")) > 0);
}
if(empty($_aGET[0])){
echo("Were on page.php");
}else{
if(is_in_table($_aGET,"c_link","fe_content")){
echo("yes");
}else{
echo("no");
}
}
这在某种程度上是行不通的..
解决!
啊哈!!!
我现在看到我用$_aGET
代替$_aGET[0]
啊!
抱歉,感谢您的帮助!!!!!!
答案 0 :(得分:0)
虽然我实际上看不到此代码的任何机械问题,但请使用下面函数的版本,如果yu
将您的功能更改为:
function is_in_table ($val, $col, $table) {
return (mysql_num_rows(mysql_query("SELECT `$col` FROM `$table` WHERE `$col` = '$val' LIMIT 1")) > 0);
}
......我们将从那里开始。
答案 1 :(得分:0)
在不了解您的数据库和变量的情况下回答您的问题有点困难,但我会试一试。
// A made up table called 'users'
+-------+---------+
| id | name |
+-------+---------+
| 1 | Bob |
+-------+---------+
| 2 | John |
+-------+---------+
// And here's your function
function rowExists($value, $field, $table){
$sanitized = is_numeric($value) ? $value : "'" . $value . "'";
$query = mysql_query("SELECT " . $field . " FROM " . $table . " WHERE " . $field . " = " . $sanitized);
// Credit: @Omeid Herat
return (boolean) mysql_num_rows($query);
}
// Some usage examples
rowExists('Bob', 'name', 'users'); // true
rowExists('Dave', 'name', 'users'); // false
此应该可以正常工作,但从SQL注入开始绝对不安全。
$page = explode('/', $_SERVER['REQUEST_URI']);
if(empty($page[1])){
echo "Were on page.php";
}else{
if(is_in_table($page[1], "c_link", "fe_content")){
echo "yes";
}else{
echo "no";
}
}