我有一个问题与MySQLi和PHP。
我创建了一个表单,一旦我输入所需的值并点击提交,这些值就会立即发送到数据库。这没什么问题。
我想要的是:在点击提交按钮后,PHP将返回刚刚提交的条目的结果。也就是说:
`INSERT INTO table VALUES (x, x, y) -> SELECT x, x, y FROM table ORDER BY id DESC LIMIT 1`
我已经尝试了很多方法来做到这一点,但所有这些方法要么重复上一个条目(在刚刚提交的条目之前的条目),要么根本不起作用。
我已经尝试了mysqli_insert_id($conn),但这没有返回任何东西。
这是我的代码目前所在的位置:
$conn = mysqli_connect($server, $user, $pw, $BD);
if (!$conn) {
die ('<span style="color: #FF0000;">"connection failed: "</span>' . mysqli_connect_error());
}
$nome = $_POST['nome'];
$preco = $_POST['preco'];
$query = "INSERT INTO produtos(nome, preco) VALUES ('$nome', '$preco')";
$result = mysqli_insert_id($conn);
var_dump ($result);
if (mysqli_query($conn, $query)){
echo '<br>'."Succeeded!";
} else {
echo '<br>'."ERROR!" .'<br>'. $query ."<br>". mysqli_error($conn) .'<br><br>'. '<span style="color: #FF0000;">You have to fill all the fields.</span>';
}
mysqli_close($conn);
要注意,如果有帮助的话,var_dump目前输出int(0)。提前感谢。
如果查询不到executing
,则无法获得mysqli_insert_id
。最好使用prepare statement
来防止sql注入
$stmt = $conn->prepare("INSERT INTO produtos(nome, preco) VALUES (?,?)");
$stmt->bind_param('ss', $nome, $preco);
$stmt->execute();// execute query
$conn->insert_id;// get last insert id
请注意,您甚至没有执行您的查询。另外,您应该注意SQL注入,并遵循以下模式:
$nome = mysqli_real_escape_string($conn, $_POST['nome']);
$preco = mysqli_real_escape_string($conn, $_POST['preco']);
$sql = "INSERT INTO produtos (nome, preco) VALUES ('".$nome."', '".$preco."')";
$query = mysqli_query($conn, $sql) or die(mysqli_error($conn));
$result = mysqli_insert_id($conn);
echo $result; // Check your result.
使用
$query = "INSERT INTO produtos(nome, preco) VALUES ('$nome', '$preco')";
$res=mysqli_query($conn,$query);
$result = mysqli_insert_id($conn);
var_dump ($result);`