创建一个从SQL检索信息的函数

时间:2013-09-22 18:13:11

标签: php sql function func

我在网站上搜索了一个答案,但找不到任何有效的问题的答案。 我有两个文件,第一个是我的index.php当然,第二个是我的functions.php文件,它显然包含了这些函数,我做了这个函数:

function sql_get($ lang,$ tabler,$ rower){

if ($lang == "heb") { 
    $result = mysql_query("SELECT * FROM %s WHERE id = 0",
        mysql_real_escape_string($tabler));
    $row = mysql_fetch_array($result);
    return $row['$rower'];
}

else if ($lang == "rus") { 
    $result = mysql_query("SELECT * FROM %s WHERE id = 0",
        mysql_real_escape_string($tabler));
    $row = mysql_fetch_array($result);
    return $row['$rower'];
}

这段代码应该获取有关语言的信息(来自get,它得到它,一切都很好),sql表和此表中id为0的特定行。

并从插入的行中返回信息。

语言为“heb”时的警告和错误:

Warning: mysql_query() expects parameter 2 to be resource, string given in /home/elenbyin/public_html/elenby.co.il/vadim/functions.php on line 16

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in /home/elenbyin/public_html/elenby.co.il/vadim/functions.php on line 17

当语言为“rus”时:

Warning: mysql_query() expects parameter 2 to be resource, string given in /home/elenbyin/public_html/elenby.co.il/vadim/functions.php on line 23

警告:mysql_fetch_array()期望参数1为资源,在第24行/home/elenbyin/public_html/elenby.co.il/vadim/functions.php中给出null

index.php文件中的函数调用如下所示:

我将感谢那些愿意帮助的人,尤其是那些愿意帮助我的人。

非常感谢!

2 个答案:

答案 0 :(得分:0)

首先,您尚未连接到函数内的数据库。如果您已经在某个地方打开了数据库,那么您可以使用mysql来解决这个问题,但不应该这样做。

其次,您将变量作为第二个参数传递给mysql_query(),但mysql_query()期望查询完成作为第一个参数,第二个参数应该是连接的连接资源到你没有的数据库。

从查询结构看,您打算使用sprintf()来创建它。

这应该为您创建查询,假设您已经打开了数据库连接:

$query = sprintf("SELECT * FROM %s WHERE id = 0",
    mysql_real_escape_string($tabler)); 
$result = mysql_query($query) or die(mysql_error());

注意:不推荐使用mysql。你不应该使用它。请改用mysqliPDO。如果使用mysqli,则需要更严格地传递数据库连接。

答案 1 :(得分:0)

正如Amal建议的那样 - 最好不要使用mysql_ *函数,因为它们不仅被弃用而且容易受到sql注入的攻击。<​​/ p>

那就是说,为了修复你的代码,你应该这样做:

$table = mysql_real_escape_string($tabler);
$sql = "SELECT * FROM $table WHERE id = 0";
$link=mysql_connect('host','user','pass');
$result = mysql_query($sql, $link);
...

因为mysql_query的第二个(也是可选的)参数应该是resource - 而不是字符串!