我在网站上搜索了一个答案,但找不到任何有效的问题的答案。 我有两个文件,第一个是我的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文件中的函数调用如下所示:
我将感谢那些愿意帮助的人,尤其是那些愿意帮助我的人。
非常感谢!
答案 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
。你不应该使用它。请改用mysqli
或PDO
。如果使用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 - 而不是字符串!