Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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 SQL错误,我试图在3表中插入数据,因为其他2表是桥_Php_Sql_Mariadb - Fatal编程技术网

Php SQL错误,我试图在3表中插入数据,因为其他2表是桥

Php SQL错误,我试图在3表中插入数据,因为其他2表是桥,php,sql,mariadb,Php,Sql,Mariadb,错误: 您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第1行中使用的正确语法(接近“)” 还有更好的办法吗 $insertSQL = sprintf("INSERT INTO booking (book_id,book_start_rent,book_end_rent,book_total,staff_id) VALUES (%s, %s, %s, %s, %s)", GetSQLValueString($_POST['

错误:

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第1行中使用的正确语法(接近“)”

还有更好的办法吗

$insertSQL = sprintf("INSERT INTO booking (book_id,book_start_rent,book_end_rent,book_total,staff_id) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['book_id'], "text"),
                       GetSQLValueString($_POST['book_start_rent'], "date"),
                       GetSQLValueString($_POST['book_end_rent'], "date"),
                       GetSQLValueString($_POST['book_total'], "double"),
                       GetSQLValueString($_POST["state2"], "text")

                       /"INSERT INTO car_booking (car_id, book_id) VALUES (%s, %s)",
                                            GetSQLValueString($_POST['state'], "text"),
                                            GetSQLValueString($_POST['book_id'], "text")

                          /"INSERT INTO member_booking (mem_id, book_id) VALUES (%s, %s)",
                              GetSQLValueString($colname_information2, "text"),
                              GetSQLValueString($_POST['book_id'], "text")

                            );
编辑:我试着用分号;在insert结束时,出现错误
语法错误,意外“;”

$insertSQL = sprintf("INSERT INTO booking (book_id,book_start_rent,book_end_rent,book_total,staff_id) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['book_id'], "text"),
                       GetSQLValueString($_POST['book_start_rent'], "text"),
                       GetSQLValueString($_POST['book_end_rent'], "text"),
                       GetSQLValueString($_POST['book_total'], "double"),
                       GetSQLValueString($_POST["state2"], "text");

                       "INSERT INTO car_booking (car_id, book_id) VALUES (%s, %s)",
                                            GetSQLValueString($_POST['state'], "text"),
                                            GetSQLValueString($_POST['book_id'], "text");

                          "INSERT INTO member_booking (mem_id, book_id) VALUES (%s, %s)",
                              GetSQLValueString($colname_information2, "text"),
                              GetSQLValueString($_POST['book_id'], "text");

                            );
编辑2:我终于可以插入了,但是有一个新的错误是

无法添加或更新子行:外键约束失败(
car)
租赁预订
会员预订
,约束
FK会员外键 (
mem_id
)在更新时删除级联上引用成员(
mem_id
) 级联)

您可以使用PDO:

// init PDO connection
$db = new PDO('mysql:host=localhost;dbname=testdb;', 'username', 'password');
$sql1 = "INSERT INTO booking (book_id, book_start_rent, book_end_rent, book_total, staff_id) VALUES (:book_id, :book_start, :book_end_rent, :book_total, :staff_id)";
$prepared1 = $db->prepare($sql);
$result1 = $prepared->execute(
    array(
        ':book_id' => GetSQLValueString($_POST['book_id'], "text"),
        ':book_start' => GetSQLValueString($_POST['book_start_rent'], "date"),
        ':book_end_rent' => GetSQLValueString($_POST['book_end_rent'], "date"),
        ':book_total' => GetSQLValueString($_POST['book_total'], "double"),
        ':staff_id' => GetSQLValueString($_POST["state2"], "text"),
    )
);
// and so on for each of your 3 queries

生成的SQL中有一个错误。首先看一下,您可以在一个查询中执行一个insert(如果您不使用多查询环境)。您必须执行3个独立的插入。。。错误只是你没有;(分号)在每个insert1)的末尾,除非使用mysqli的multi_查询,否则不能在同一查询中执行所有3个插入。把它们分开。2) 您可以进行SQL注入。请确保您使用的是PDO或mysqli,并使用准备好的语句和参数绑定。顺便说一句,您的代码中有一个非常有趣的划分,我认为这完全是非自愿的:
GetSQLValueString(…)/“INSERT-INTO…”
。您在哪里尝试注释掉字符串?正如在
/“插入…”
?@XitoxReturns中一样,只需将每个插入查询作为一个单独的查询运行。在使用参数绑定时,不需要使用getSQLValueString。如果您假设它所做的一切都是sql注入,但可能是更多的事情,我不知道函数中有什么内容,这几乎就是它所做的一切。
// init PDO connection
$db = new PDO('mysql:host=localhost;dbname=testdb;', 'username', 'password');
$sql1 = "INSERT INTO booking (book_id, book_start_rent, book_end_rent, book_total, staff_id) VALUES (:book_id, :book_start, :book_end_rent, :book_total, :staff_id)";
$prepared1 = $db->prepare($sql);
$result1 = $prepared->execute(
    array(
        ':book_id' => GetSQLValueString($_POST['book_id'], "text"),
        ':book_start' => GetSQLValueString($_POST['book_start_rent'], "date"),
        ':book_end_rent' => GetSQLValueString($_POST['book_end_rent'], "date"),
        ':book_total' => GetSQLValueString($_POST['book_total'], "double"),
        ':staff_id' => GetSQLValueString($_POST["state2"], "text"),
    )
);
// and so on for each of your 3 queries