Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;在$schoolname(';cat';,';…)中插入$#u POST";“如果声明”;未将值传递到$schoolname表中_Php_Mysql_Variables_Post_Insert - Fatal编程技术网

Php &引用;在$schoolname(';cat';,';…)中插入$#u POST";“如果声明”;未将值传递到$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)代替表名,则不传递值。我需要

在“插入到”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提供了一个解决方案,很抱歉我的回复太晚了。我已经编辑了我的回复,想知道你是否能够对这些代码进行调整,然后向我们展示它抛出的输出,也许是在你最初的问题中?