PHP SQL/您的SQL语法有错误


PHP SQL / You have an error in your SQL syntax

我在尝试将用户变量插入数据库时遇到了一些严重的困难。我一直收到错误您的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";

也许您的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";
}

尝试这个

     $sql=mysqli_query($con,"INSERT INTO Drug (drug) VALUES ('".$drugName."')");

编辑:

您的问题在于创建表。

如果表的顺序不正确,则应在DrugSideEffect之前创建表SideEffect

试试这个订单:

$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;";

$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"; }