Php 为什么这个简单的函数不起作用?
我不想重复相同的select查询,所以我编写了这个函数。但它不起作用:Php 为什么这个简单的函数不起作用?,php,Php,我不想重复相同的select查询,所以我编写了这个函数。但它不起作用: function select($what, $table) { $query = mysql_query("SELECT $what FROM $table"); } select(*, products); 您需要返回$query function select($what, $table) { return $query = mysql_query("SELECT $what FROM $table"
function select($what, $table) {
$query = mysql_query("SELECT $what FROM $table");
}
select(*, products);
您需要返回$query
function select($what, $table) {
return $query = mysql_query("SELECT $what FROM $table");
}
$query = select(*, products);
然后,$query将获得查询的结果源,然后使用mysql\u fetch\u xxx或其他任何工具 您的参数应该是字符串,即选择“*”、“产品”可能是因为$query在函数结束后被丢弃?我对SQL没有太多经验,但这对我来说会更好:
function select($what, $table) {
return mysql_query("SELECT $what FROM $table");
}
select("*", "products");
哦,产品需要是字符串
你需要用引号把你的论点括起来。
之后应该返回查询指针。
您应该引用转义值以避免SQL注入。
对于调试:
function select($what, $table) {
$what = mysql_real_escape_string($what);
$table = mysql_real_escape_string($table);
$query = mysql_query("SELECT '$what' FROM `$table`;") or die(mysql_error());
return $query;
}
$query = select('*', 'products');
你应该做的是:
function select($what, $table) {
return mysql_query("SELECT $what FROM `$table`");
}
$query = select('*', 'products');
你试过使用mysql\u error func吗?这是SQL注入的噩梦。@Bill Karwin我总是用mysql\u real\u escape\u字符串来清理我的输入,我只是没有写在这里:mysql\u real\u escape\u字符串用于字符串,而不是表名、列名、SQL关键字、表达式等。我完全复制了你的代码,但仍然不起作用,给出此错误:警告:mysql\u fetch\u assoc期望参数1为resource,在第22行的C:\xampp\htdocs\shopping\u cart\product.php中给出布尔值。这是因为mysql\u查询返回false。请用mysql\u real\u escape\u字符串替换addslashes。另请参阅我提供的addslashes-1文档,直到您解决了这一问题……您也不能将表名放在单引号中。现在可以使用:函数select$what,$table{return$query=mysql\u querySELECT$what from$table;}$query=select*,products;
function select($what, $table) {
return mysql_query("SELECT $what FROM `$table`");
}
$query = select('*', 'products');