“插入$ schoolname('cat','...)$ _POST”if语句“未将值传递到$ schoolname表

时间:2012-01-17 05:14:37

标签: php mysql variables post insert

我在使用$ insertname读取“插入到”mysql命令时遇到问题。

我只是为一个跨越几所学校的粉丝俱乐部创造一件小事。所以我为每所学校创建了一个不同的数据库表。每个学校都有一个唯一的ID,表名对应。代码如下。请帮忙。那么,问题区域是插入部分。

“插入$ schoolname('cat','...) 由于某种原因,$ schoolname没有捕获$ _POST if语句

mysql命令“insert into ....”如果我指定了硬编码表名,则传递值,但如果我指定变量($ 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')";


    }

    ?>

2 个答案:

答案 0 :(得分:2)

由于你没有指明你所看到的问题,这只是一个猜测:

if(isset($_GET['schoolid']) && isset($_GET['schoolid']) != '')

不应该是

if(isset($_GET['schoolid']) && $_GET['schoolid'] != '')

作为旁注,请考虑如果用户在schoolid中输入以下内容会发生什么:

0; delete from schools

这称为SQL注入,您应该使用“绑定变量”而不是通过连接字符串来构建查询。

答案 1 :(得分:0)

问题似乎是以下问题:

$sqlschoolid = "select * from schools where status = 'Active' ".$schoolid;

最后$ schoolid变量是什么?我看到什么是$ schoolid变量,我认为变量没有正确设置。

根据我的理解,上述查询可能会抛出错误,因此$ schoolname根本没有填充。您能否尝试打印该查询的样子?

编辑1 阅读过去的讨论,显然$schoolname变量为空,即没有值。这不是范围问题,因为您的代码$schoolname位于全局范围内,因此可在$ _POST IF检查中使用。因此,让我们尝试调试代码来分析选项:

  1. 您可以在编写查询后放置echo $sqlschoolid;吗?这将确认查询格式是否正确

  2. 假设查询是好的,现在让我们检查查询是否返回正确的数据?我不确定你使用的是哪个DB类,所以我不能说$ obj-&gt; sql_query()返回什么?也许是MySQL结果集。无论如何,你可以将var_dump($resschoolid)放在初始化之后吗?还有下面的var_dump($school)

  3. 这就是我希望您放置调试语句的方式:

    $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'];
    

    我希望以上内容能够更深入地了解这个问题。如果您有任何疑问,请与我联系。