这是编辑过的脚本没有错误。并且应用了2个修复程序。对于那些部分帮助的人,谢谢。提到代码不清楚或杂乱是无关紧要的。鉴于以下大多数是mysql查询中的常见结构。甚至mysql的示例文档也遵循这个类似的流程。回复的成员应该否定毫无意义的互联网戏..它更值得你的时间,而我自己也是如此。那些留下话题和协助的人,谢谢你。
例如:
$ row = mysqli_fetch_row(mysqli_query($ con,“SELECT test_table.points FROM test_table WHERE test_table.key ='”。$ key。“'”)); if($ row [0]> 0){//存在
如果为$,则$ row将返回非零结果。否则0表示假。几乎没有必要检查mysqli_fetch_row和/或mysqli_query。因为在简单中检查$ row工作正常。在一般存在条件下单独检查mysqli_fetch_row和/或mysqli_query是不必要的。它确实提供了存在/不存在的结果。没有$ result $ row $查询只是$ row。
我对使用call_user_func的愿望是指向正常流程的偏差。并通过$ _GET在func和params中进行轮询。将更多关注PDO。但是,exec之前的干净代码现在应该做得很好。这是在exec之前清理。
总而言之,代码可以正常工作。并且已经写了更多来管理mysql数据库。从写入,写入块,读取,读取块,删除,删除块。
还可根据要求收集编号记录。例如,假设你有同样约翰史密斯的6条记录。您现在可以整理并扫描这些记录中的差异。无论是你想要什么,不想要什么,等等。或者,如果你只是想盲目地为约翰史密斯打电话给那些记录中的前三个。
mysqli_fetch_row& mysqli_fetch_row修复:
FROM 调用$ con outside函数然后按照mysql调用。在mysqli中哪个不能按预期工作。关于$ con的处理方式,函数没有错误。
TO 仅使用添加的全局$ con调用$ con内部函数。最终可能会使用$ GLOBALS。
结果:调用$ con outside函数然后在mysql中正常工作。在mysqli中,它需要在函数内设置全局。即全球$ con。或者它失败了。
call_user_func非严重错误修复:
FROM call_user_func($ func($ _ GET ['user'],$ _ GET ['key'],$ _ GET ['points'],$ _ GET ['type']));
TO call_user_func($ func,$ _ GET ['user'],$ _ GET ['key'],$ _ GET ['points'],$ _ GET ['type']); < / p>
结果:两行都正确执行。 从执行非严重错误。 TO 做同样的事情,但没有发生以下非严重错误。
两者的样本输出:user = MY_Name; key = 34342 $ ee56i1; points = 1234; type =
- 删除代码作为修复程序解决了问题 -
答案 0 :(得分:0)
您正在使用call_user_func错误阅读manutal call_user_func第一个参数是回调 - 在你的情况下它是你的类中的一个函数所以它应该是这样的: 如果对象中有非静态函数:
class Test{
public function doit($a){
echo($a);
}
}
$t = new Test();
call_user_func(array($t,'doit'),'asfaasfs');
和对象内的静态函数:
class Test{
public static function doit($a){
echo($a);
}
}
call_user_func('Test::doit','asfaasfs');
答案 1 :(得分:0)
你有一些问题。
$con
在类外声明,因此在类中不可用。您需要将它传递给类(更好的选项),或将其指定为全局(快速+脏选项)。
mysqli_fetch_row(mysqli_query($con,'...'))
这段代码显然是直接从您的旧mysql_xx()
代码转换而来的,但它并不好。
您忽略了mysqli_query()
返回的任何可能的错误情况。这意味着如果它失败了,它会将false
传递给mysqli_fetch_row()
函数,然后该函数会因无意义的错误expects parameter 1 to be mysqli_result
而失败,而不是实际告诉您错误是什么查询。
问题是,由于我上面的第一点,$con
未设置,mysqli_query()
失败,这就是您在mysqli_fetch_row()
中收到错误的原因。< / p>
理想情况下,您应该将此代码拆分为多行。单独调用mysqli_query()
,然后进行一些错误检查,只有在您知道查询确实有效后再调用mysqli_fetch_row()
。
希望有助于解释这里存在的问题。解决这两点,你应该很好地整理整个事情。
一旦摆脱了这些致命错误,您还应该花时间解决代码易受SQL注入攻击的问题。您目前正在将$_GET
变量直接传递到查询字符串中,而不会进行任何排毒。这将使您的系统非常脆弱且易于破解。您应该考虑使用参数化查询,这是mysqli库的一个功能,旨在使您更安全,更安全地处理SQL查询中的变量。
答案 2 :(得分:-1)
你的课程目前毫无意义,或许坚持编写命令式的代码,因为它至少会更清晰。
目前,您应该将$ con传递给您的MYsql类,将其自身用作资源,而不是尝试将其作为全局变量访问。
您也没有过滤用户的输入,这很危险,可能会导致对您网站的SQL注入攻击。
我建议你仔细阅读这两篇文章,一旦你了解它们,我也鼓励你简单地转而使用PDO和预备语句。这将阻止您的代码当前允许的SQL注入攻击。
http://net.tutsplus.com/tutorials/php/pdo-vs-mysqli-which-should-you-use/ http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/