0

我正在尝试在 php 页面中执行此代码以将一些数据存储在我的数据库中。问题是我想插入数据,但由于外键约束,这是不可能的。所以,在我的 php 代码中,我想执行两个 sql 查询。第一个禁用外键检查,第二个插入数据

当我在 phpmyadmin 中尝试它时,它可以工作。而是手动的。我想把它放在php代码上。

这是我的代码。参数$conexion 是执行我的 sql 查询的参数。

有任何想法吗?

$sql = "SET foreign_key_checks=0";
$sql. = "INSERT INTO routes (title, distance, subtitle) VALUES ('".$_POST['title']."','".$_POST['distance']."', '".$_POST['subtitle']."');";

$conexion->multi_query($sql);
4

2 回答 2

1

除了上面的评论,你的 sql 语句之间需要一个分号

multi_query - 执行一个或多个由分号连接的查询。

于 2015-06-24T20:23:09.377 回答
1

尽量避免使用multi_query. 向 MySQL 服务器发送一个小查询并不会真正影响性能,并且确实可以防止某种限制,例如 SQL 注入。

在您的情况下,不需要multi_query. 如果您在一个脚本中发送两个查询,则两者都在同一个连接上进行。该SET查询影响当前连接。

// Protect against SQL injection
$title = $conexion->escape_string($_POST['title']);
$distance = $conexion->escape_string($_POST['distance']);
$subtitle = $conexion->escape_string($_POST['subtitle']);

// Execute queries
$conexion->query("SET forgeign_key_checks=0");
$conexion->query("INSERT INTO routes (title, distance, subtitle) VALUES ('$tittle', '$distance', '$subtitle')");
于 2015-06-24T20:23:38.310 回答