我在尝试将用户变量插入数据库时遇到了一些严重困难。
我一直收到错误您的SQL语法错误。我已经搜索了几天的表格并尝试了不同的解决方案,但无济于事。我尝试使用'$var'
,'".$var."'
,"$var"
但没有运气。
如果我使用没有引号的$ var我得到错误列数与第1行的值计数不匹配。
任何帮助将不胜感激。谢谢。
下面是代码段和数据表。
$con= mysqli_connect("oni", "mul", "kjnbiunvtr","mul");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$drugName=$_POST['drugName'];
$drugName=mysql_real_escape_string($drugName);
$treats=$_POST['treats'];
$treats=mysql_real_escape_string($treats);
$effects=$_POST['effects'];
$effects =mysql_real_escape_string($effects);
$sideEffect=$_POST['SideEffects'];
$sideEffect= mysql_real_escape_string($sideEffect);
$sideEffect2=$_POST['SideEffects2'];
$sideEffect2=mysql_real_escape_string($sideEffect2);
$sideEffect3=$_POST['SideEffects3'];
$sideEffect3= mysql_real_escape_string($sideEffect3);
$sql=mysqli_query($con,"INSERT INTO Drug(drug) VALUES('$drugName')");
if (mysqli_query($con,$sql))
{
echo "Drug insertion successful : ";
echo "\r\n";
}
else
{
echo "Error 1 : " . mysqli_error($con);
echo "\r\n";
}
表:
$sql1="CREATE TABLE Drug
(Id int (11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Id),
drug VARCHAR(50) NOT NULL
)ENGINE=INNODB;";
$sql2="CREATE TABLE DrugSideEffect
( Id int (11) NOT NULL AUTO_INCREMENT,
D_Id int (11) NOT NULL,
SE_Id int (11) NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (SE_Id) REFERENCES SideEffect(Id),
FOREIGN KEY (D_Id) REFERENCES Drug(Id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=INNODB;";
$sql3="CREATE TABLE Treatment
(Id INT NOT NULL AUTO_INCREMENT,
T_Id int (11) NOT NULL,
Descr VARCHAR (250) NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (T_Id) REFERENCES Drug(Id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=INNODB;";
$sql4="CREATE TABLE Effects
(Id INT NOT NULL AUTO_INCREMENT,
E_Id int (11) NOT NULL,
Descr VARCHAR (250) NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (E_Id) REFERENCES Drug(Id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=INNODB;";
$sql5="CREATE TABLE SideEffect
(Id int (11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Id),
Descr VARCHAR (250) NOT NULL
)ENGINE=INNODB";
答案 0 :(得分:0)
也许你的MySQL版本是> = 5.5并且不推荐mysql_real_escape_string
函数。您可以尝试使用mysqli_real_escape_string
方法,如下例所示。
$con= mysqli_connect("oni", "mul", "kjnbiunvtr","mul");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$drugName=$_POST['drugName'];
$drugName=mysqli_real_escape_string($con, $drugName);
$sql=mysqli_query($con,"INSERT INTO Drug(drug) VALUES('$drugName')");
if (mysqli_query($con,$sql))
{
echo "Drug insertion successful : ";
echo "\r\n";
}
else
{
echo "Error 1 : " . mysqli_error($con);
echo "\r\n";
}
答案 1 :(得分:-1)
试试这个
$sql=mysqli_query($con,"INSERT INTO Drug (drug) VALUES ('".$drugName."')");
编辑:
你的问题在于创建表格。
您的表格排序不佳,您应该在SideEffect
之前创建表格DrugSideEffect
。
尝试这个顺序:
$sql1="CREATE TABLE Drug
(Id int (11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Id),
drug VARCHAR(50) NOT NULL
)ENGINE=INNODB;";
$sql5="CREATE TABLE SideEffect
(Id int (11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Id),
Descr VARCHAR (250) NOT NULL
)ENGINE=INNODB";
$sql2="CREATE TABLE DrugSideEffect
( Id int (11) NOT NULL AUTO_INCREMENT,
D_Id int (11) NOT NULL,
SE_Id int (11) NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (SE_Id) REFERENCES SideEffect(Id),
FOREIGN KEY (D_Id) REFERENCES Drug(Id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=INNODB;";
$sql3="CREATE TABLE Treatment
(Id INT NOT NULL AUTO_INCREMENT,
T_Id int (11) NOT NULL,
Descr VARCHAR (250) NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (T_Id) REFERENCES Drug(Id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=INNODB;";
$sql4="CREATE TABLE Effects
(Id INT NOT NULL AUTO_INCREMENT,
E_Id int (11) NOT NULL,
Descr VARCHAR (250) NOT NULL,
PRIMARY KEY(Id),
FOREIGN KEY (E_Id) REFERENCES Drug(Id)
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=INNODB;";
答案 2 :(得分:-1)
$con= mysqli_connect("oni", "mul", "kjnbiunvtr","mul");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$drugName=$_POST['drugName'];
$drugName=mysqli_real_escape_string($con, $drugName);
$sql=mysqli_query($con,"INSERT INTO Drug(drug) VALUES('$drugName')");
if(mysqli_query($ con,$ sql))
{
echo "Drug insertion successful : ";
echo "\r\n";
}
else
{
echo "Error 1 : " . mysqli_error($con);
echo "\r\n";
}