我在“插入”mysql 命令中读取 $schoolname 时遇到问题。
我只是在为一个跨越几所学校的粉丝俱乐部创建一个小东西。所以我为每所学校创建了一个不同的数据库表。每个学校都有一个唯一的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')";
}
?>
最佳答案
由于您没有具体说明您遇到的问题,这只是一个猜测:
if(isset($_GET['schoolid']) && isset($_GET['schoolid']) != '')
不应该是
if(isset($_GET['schoolid']) && $_GET['schoolid'] != '')
作为旁注,请考虑如果用户在 schoolid
中输入以下内容会发生什么:
0; delete from schools
这称为 SQL 注入(inject),您应该使用“绑定(bind)变量”而不是通过连接字符串来构建查询。
关于php - "insert into $schoolname (' cat ',' ...) $_POST "if statement "没有将值传递到 $schoolname 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8889996/