我有点奇怪的问题。我试图检查某个值是否存在通过一个自创建的函数在数据库中,像这样
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;
}
}
据我所知,这是有效的(我在函数外检查了它并回显了结果)。它在那里工作得很好。但是当我这样做时,它一直显示'yes'(它应该显示'no')
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 |
+-----------------+
我有以下url 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]
啊!
对不起,感谢所有的帮助!!!!!!
在不了解更多数据库和变量的情况下回答你的问题有点困难,但我会试一试。
// 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";
}
}
虽然我实际上看不出这段代码有任何机械问题,但请使用下面的函数版本,如果您
把你的函数改成:
function is_in_table ($val, $col, $table) {
return (mysql_num_rows(mysql_query("SELECT `$col` FROM `$table` WHERE `$col` = '$val' LIMIT 1")) > 0);
}
…然后从这里开始。