繁体   English   中英

mysql_field_name 到数组

[英]mysql_field_name into array

我正在尝试将表中的字段名称与 $_GET 字段名称进行比较,如果它存在于表中则创建一个查询字符串,如果我像$t1 = mysql_field_name($result,1); 它可以工作,但是像$vars = mysql_field_name($result);一样加载它们剂量似乎不起作用。

这个剂量不起作用

$query = array();
$result = mysql_query("SELECT * FROM search_prof");
$vars = mysql_field_name($result);

foreach ($vars as $v)
{
    if (isset($_GET[$v]))
    {
        $query[] = $v.' = "'.addslashes($_GET[$v]).'"';
    }
}
$query = implode(' AND ', $query); 

这有效

$t1 = mysql_field_name($result,1);
$t2 = mysql_field_name($result,2);
$t3 = mysql_field_name($result,3);
$t4 = mysql_field_name($result,4);
$t5 = mysql_field_name($result,5);


    $query = array();
    $result = mysql_query("SELECT * FROM search_prof");
    $vars = array('$t1', '$t2', '$t3', '$t4', '$t5'); 

    foreach ($vars as $v)
    {
        if (isset($_GET[$v]))
        {
            $query[] = $v.' = "'.addslashes($_GET[$v]).'"';
        }
    }
    $query = implode(' AND ', $query); 

您应该查看 php 文档: http://php.net/manual/de/function.mysql-field-name.php

function 中的第二个参数不是可选的,因此您必须采用第二种方法。

如果你想让它动态,你可以使用 mysql_num_field function,它给你列数。 之后你可以构建一个循环,迭代这么多次,每次调用 mysql_field_name function。

如果你想让你目前的方法奏效,我想你可以这样做:

//Get fields in table
$numberOfFields = mysql_num_fields($result) - 1;

$fields = array();
for ($i = 0; $i <= $numberOfFields; $i++) {
    $fields[] = mysql_field_name($result, $i);
}

//Intersect
$parameters = array_intersect(array_keys($_GET), $fields);

//Query
$q = array();
foreach($parameters as $parameter) {
    $q[] = $v . '="' . addslashes($_GET[$parameter]) . '"';
}

$q = implode(" AND ", $q);

您也可以尝试在表上运行 DESCRIBE 查询并解析这些结果,但不知道 DESCRIBE 的性能。

您可以使用类似这样的方法来获取字段。

$query = array();
$result = mysql_query("SELECT * FROM search_prof");
$numFields = mysql_num_fields($result);
$vars = array();
for ( $i = 0; $i < $numFields; $i++ )
    $vars[] = mysql_field_name($result, $i);

foreach ($vars as $v)
{
    if (isset($_GET[$v]))
    {
        $query[] = $v.' = "'.addslashes($_GET[$v]).'"';
    }
}
$query = implode(' AND ', $query); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM