Php &引用;在$schoolname(';cat';,';…)中插入$#u POST";“如果声明”;未将值传递到$schoolname表中
在“插入到”mysqlname命令中读取$schoolname时遇到问题 我只是为一个跨越几所学校的粉丝俱乐部做一件小事。所以我为每所学校创建了一个不同的数据库表。每个学校都有一个唯一的id,表名与之对应。代码如下。请帮忙。嗯,问题是插入部分 “插入$schoolname('cat','…) 由于某些原因,$\u POST if语句无法捕获$schoolname mysql命令“插入到…”。。。。“如果指定硬编码的表名,则传递值;如果指定变量($schoolname)代替表名,则不传递值。我需要指定变量,因为有许多学校都有自己的表Php &引用;在$schoolname(';cat';,';…)中插入$#u POST";“如果声明”;未将值传递到$schoolname表中,php,mysql,variables,post,insert,Php,Mysql,Variables,Post,Insert,在“插入到”mysqlname命令中读取$schoolname时遇到问题 我只是为一个跨越几所学校的粉丝俱乐部做一件小事。所以我为每所学校创建了一个不同的数据库表。每个学校都有一个唯一的id,表名与之对应。代码如下。请帮忙。嗯,问题是插入部分 “插入$schoolname('cat','…) 由于某些原因,$\u POST if语句无法捕获$schoolname mysql命令“插入到…”。。。。“如果指定硬编码的表名,则传递值;如果指定变量($schoolname)代替表名,则不传递值。我需要
<?php
require_once('include.php');
include('imageupload.php');
$schoolid='';
if(isset($_GET['schoolid']) && isset($_GET['schoolid']) != '')
{
$schoolid .= 'and id ='.$_GET['schoolid'];
}
$sqlschoolid = "select * from schools where status = 'Active' ".$schoolid;
$resschoolid = $obj->sql_query($sqlschoolid);
$school = $resschoolid[0];
$schoolname = $school['parameter'];
$schoolid2 = $school['id'];
if($_POST)
{
(isset($_POST['pr']) && $_POST['pr'] != "") ? $price=mysql_real_escape_string($_POST['pr']) : $pr="" ;
$sqlclass = "insert into $schoolname(`category`,`type`,`price`,`title`,`description`,`weburl`,`image`,`email`,`phone`,`address`,`city`,`state`,`zip`,`postdate`,`sponser`,`status`)
values('".$_POST['subcategory']."','".$_POST['type']."','".$pr."','".mysql_real_escape_string($_POST['title'])."','".mysql_real_escape_string($_POST['description'])."','".mysql_real_escape_string($_POST['weburl'])."','".$imagename."','".mysql_real_escape_string($_POST['email'])."','".mysql_real_escape_string($_POST['phone'])."','".mysql_real_escape_string($_POST['address'])."','".mysql_real_escape_string($_POST['city'])."','".mysql_real_escape_string($_POST['state'])."','".mysql_real_escape_string($_POST['zip'])."','".date('Y-m-d H:i:s')."','0','Active')";
}
?>
由于您尚未指定看到的问题,因此这只是一个猜测:
if(isset($_GET['schoolid']) && isset($_GET['schoolid']) != '')
难道不是吗
if(isset($_GET['schoolid']) && $_GET['schoolid'] != '')
作为一个旁注,请考虑如果用户在SualID >中输入以下内容:
0; delete from schools
这就是所谓的SQL注入,您应该使用“绑定变量”,而不是通过连接字符串来构建查询。问题似乎在于以下查询:
$sqlschoolid = "select * from schools where status = 'Active' ".$schoolid;
最后是什么$schoolid变量?我看到了什么是$schoolid变量,我假设变量设置不正确
据我所知,上面的查询可能会抛出错误,因此$schoolname根本没有填充。请尝试打印该查询的外观,好吗
编辑1阅读过去的讨论,很明显,$schoolname
变量是空的,即没有值。这不是范围问题,因为从您的代码来看,$schoolname
在全局范围内,因此如果选中,可以在$\u POST中使用。因此,让我们尝试调试代码以分析选项:
能否在编写查询的位置之后放置一个echo$sqlschoolid;
?这将确认查询格式正确
假设查询是好的,现在让我们检查一下查询是否返回了正确的数据?我不确定您使用的是什么DB类,所以我不能说$obj->sql\u query()返回了什么?也许是MySQL结果集。不管怎样,您能把var\u dump($reschoolid)
放在初始化后吗?还有另一个var\u dump($school)
如下
以下是我希望您如何放置调试语句:
$sqlschoolid = "select * from schools where status = 'Active' ".$schoolid;
echo $sqlschoolid;
$resschoolid = $obj->sql_query($sqlschoolid);
var_dump($resschoolid);
$school = $resschoolid[0];
var_dump($school);
$schoolname = $school['parameter'];
$schoolid2 = $school['id'];
我希望以上内容能让您更深入地了解这个问题。如果您有任何问题,请告诉我。“我有问题”-更具体地说,是每所学校的不同数据库,还是每所学校的不同表?作为旁注,您应该避开$\u POST['subcategory']和$\u POST['type']即使这是由你的HTML自动填充的。人们可以很容易地更改这些值并进行SQL注入。试着不仅写问题,而且先自己阅读。你提问解释什么都没有对不起,我是一个初学者,把一些代码拼凑在一起并学习。我添加了更多细节。我将继续阅读绑定变量。但我在我的include文件中,我对$\u GET和$\u POST使用了mysql\u real\u转义特性。这是否涵盖了你提到的问题?问题在于插入部分和表名的$schoolname,即插入到$schoolname中。我想了如何解决它。$schoolname不会在“if(\u$POST)”中执行"语句,所以我在一个单独的文件中创建了它并使用了include。现在一切都正常了,读起来也很好。谢谢女士们先生们。现在是时候做一些SQL注入保护了。有什么提示吗?编辑实际上它仍然不起作用。出于某种原因,它在$\u POST语句中执行$schoolname时出现问题。一个表单指向该post语句我可以回显($schoolname和$sqlschoolid)当我在$\u POST if语句中执行上述操作时,一切正常。但是当我尝试在$\u POST语句中回显它时,它不在那里。没有读取。因此,我的变量似乎没有进入$\u POST if语句。当我打印$schoolname时,它显示为arrayschoolname。我的问题是,在另一个文件中,在select部分,$schoolname exe剪切,但没有$\u POST if语句(无表单)。下面是$sqllisting=“从$schoolname中选择*状态='Active'。$where.'order by sponser desc,postdate desc'.$max;$reslisting=$obj->sql\u查询($sqllisting);这个网站似乎为我的问题@BigFreeze提供了一个解决方案,很抱歉我的回复太晚了。我已经编辑了我的回复,想知道你是否能够对这些代码进行调整,然后向我们展示它抛出的输出,也许是在你最初的问题中?