gpt4 book ai didi

PHP 未将数组插入 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 19:01:30 25 4
gpt4 key购买 nike

我的 php 脚本没有将数组的内容插入 MySql 数据库。这是一个代码片段。

<?php

session_start();

$host="localhost";
$user="root";
$password="";
$database="burudani db";
$con=mysqli_connect($host,$user,$password,$database);

if(!$con or !$database){
echo'Connection to MySQL failed!';
echo json_encode(0);
}else{


$datx=$_POST['data'];
if(isset($_POST['data'])){

$title=$datx[0];
$year=$datx[1];
$format=$datx[3];
$type=$datx[5];
$genre=$datx[6];
$desc=$datx[7];
$actors=$datx[11];
$imi=$datx[8];
$imr=$datx[9];
$pos=$datx[10];
$comments=$datx[2];
$price=$datx[4];

$sql="insert into `movies` values(NULL,'$title','$year','$format','$type','$genre','$desc','$actors','$imi','$imr','$pos','$comments','$price') or die(mysql_error());";
$result=mysqli_query($con,$sql);

if(!$result){
echo json_encode(1);
}
else{
echo json_encode(2);
}
}
else if(!isset($_POST['dat'])){
echo json_encode(3);
}
}

mysqli_close($con);
?>

数组 $datx 是通过 ajax 从 javascript 发送的。现在,仅当数据库中存在 title 时,它才会插入一条记录。例如,如果我尝试插入标题为“哈利·波特”的记录,但数据库中没有标题为“哈利·波特”的记录,则不会插入。我尝试过使用 unset($datx); 但没有成功。 title 字段在 MySQL 中是文本类型。请帮忙,谢谢。

最佳答案

您的 SQL 中有错误。 或 die(mysql_error()) 不属于那里。

我怀疑你的意思是这样写:

$sql="insert into `movies` values(NULL,'$title','$year','$format','$type','$genre','$desc','$actors','$imi','$imr','$pos','$comments','$price')";
$result=mysqli_query($con,$sql) or die(mysqli_error());

但请注意,您的脚本容易受到 SQL 注入(inject)攻击

请阅读prepared statements 。你的代码将变成这样:

// create a statement with placeholders for variables
$statement = mysqli_prepare($con, "insert into `movies` values(NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

// bind the variables to the placeholders
// note: I do not know what datatypes you're expecting, so have assumed strings.
// modify the 'ssssssssssss' as required
mysqli_stmt_bind_param($statement, 'ssssssssssss', $title, $year, $format, $type, $genre, $desc, $actors, $imi, $imr, $pos, $comments, $price);

// execute the statement or show error (on production environment
// consider logging instead of displaying errors
mysqli_stmt_execute($statement) or die(mysqli_error());

// clean up the statement
mysqli_stmt_close($statement);

关于PHP 未将数组插入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43844764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com