如何爆炸数组并将其保存在数据库中

时间:2018-05-01 18:37:37

标签: php mysqli

我的php文件中有一个名为bookseat的数组。我编写了一个代码来爆炸它并将其保存在我的数据库中。

代码如下。

$bookseat = array(1, 2, 3);
$arrlength = count($bookseat);
$bookseatarray = explode(',', $bookseat);

$conn = new mysqli($servername, $username, $password, $db);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

if ($result = mysqli_query($conn, "SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'titan3d' AND TABLE_NAME = 'bookings'", MYSQLI_USE_RESULT)) {
        $row = mysqli_fetch_assoc($result);
        $now = $row['AUTO_INCREMENT'];
} else {
    echo mysqli_error($conn);
}

for($i = 0; $i < count($bookseatarray); ++$i){
    $SQL_project_has_type = "INSERT INTO bookseat (seat, bid)
    VALUES({$bookseatarray[$i]}, '$now')";
    mysql_query($SQL_project_has_type);
    }

if ($conn->query($sql) === TRUE) {
    header('Location: http://localhost/My%20Project/booksuccess.html');
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

具有自动增量的部分可以正常工作,但其他部分似乎不起作用。

当代码在舞台上时,我收到错误“警告:explode()期望参数2是字符串,在第25行的C:\ xampp \ htdocs \ My Project \ JSFiles \ book.php中给出的数组”

这里可能出现的错误是什么?有人可以帮忙!

3 个答案:

答案 0 :(得分:0)

由于$bookseat已经是一组数字(在这种情况下),您不需要explode()部分,只需直接使用该数组......

for($i = 0; $i < count($bookseat); ++$i){
    $SQL_project_has_type = "INSERT INTO bookseat (seat, bid)
         VALUES({$bookseat[$i]}, $now)";
    mysqli_query($conn, $SQL_project_has_type);
}

并删除......

$bookseatarray = explode(',', $bookseat);

您还应该研究使用预准备语句和绑定变量。您还混合了mysql_mysqli_。所以在循环中纠正了调用。

<强>更新

也注意到了......

if ($conn->query($sql) === TRUE) {

这似乎没有在您的代码中运行任何SQL。

答案 1 :(得分:0)

$bookseatarray = explode(',', $bookseat);

$ bookseat已经是一个数组,所以它不起作用; explode()应该有一个字符串作为第二个参数(你试图将一个数组拆分成一个数组)。 为此:$bookseat = "1,2,3";

另请勿使用mysql_query - &gt; mysqli_query( ...

答案 2 :(得分:0)

我希望这会对您有所帮助
我已经测试了你的代码。

代码中的问题很少
  1. 您的数组是int形式,但爆炸在数组输入时有效 是字符串形式所以你不需要它
  2. 我更喜欢使用 Foreach 循环来表示数组。通过此循环,您可以轻松提取数组值。
  3. 您必须定义$ sql变量
  4. 不要使用 mysql_query(),因为mysql被替换为 mysqli_query()
  5. 所以这是您测试过的代码。 “

    $bookseat = array(1, 2, 3);
    $conn = new mysqli($servername, $username, $password, $db);
    
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);  
    } 
    
    if ($result = mysqli_query($conn, "SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'titan3d' AND TABLE_NAME = 'bookings'", MYSQLI_USE_RESULT)) {
        $row = mysqli_fetch_assoc($result);
    } else {
        echo mysqli_error($conn);
    }
    foreach ($bookseat as $key => $value) {
            $SQL_project_has_type = "INSERT INTO bookseat (seat, bid)
            VALUES($value, {$row['AUTO_INCREMENT']})";
            mysqli_query($conn,$SQL_project_has_type);
    }
    $conn->close();
    

    如果您的第一个查询工作正常,那么foreach循环查询将正常工作。我已用随机值替换你的$ row ['AUTO_INCREMENT']值,它对我来说很好用