gpt4 book ai didi

php - 插入mysql数据库无法从php运行

转载 作者:行者123 更新时间:2023-11-29 05:17:59 24 4
gpt4 key购买 nike

我无法插入我的数据库。我的插入语句之一有效,因为当我执行 Select * from table;我得到了新记录。但是,当我从中选择 * 时,我想插入的另一个表没有任何值。

我想要插入值的 2 个表的 DDL 是

CREATE TABLE Job(uid INTEGER,job_id INTEGER AUTO_INCREMENT,
input varchar(500),status varchar(100),start_time time,finish_time time,
FOREIGN KEY(uid) REFERENCES User(uid) ON DELETE CASCADE,
PRIMARY KEY(job_id))ENGINE = InnoDB;

CREATE TABLE BLAST(database varchar(100),evalue varchar(100),job_id INTEGER,
FOREIGN KEY (job_id) REFERENCES Job(job_id))ENGINE = InnoDB;

有问题的表是 BLAST 表。我相信这是因为有一个 job_id 的外键,我实际上并没有插入那个值。我认为它只会做与 Job 表中的 job_id 相同的 job_id 但我猜我错了。如果有人能向我解释该怎么做,我将不胜感激!

PHP代码

<select id="database" name="database">
<option selected="selected" disabled="disabled">Database</option>
<option value="Archaea">Archaea</option>
<option value="Bacteria">Bacteria</option>
</select>

<select id="evalue" name="evalue">
<option selected="selected" disabled="disabled"> evalue <option>
<option value="0.0001">0.0001</option>
<option value="0.001">0.001</option>
</select>

<select id="hits" name="hits">
<option selected="selected" disabled="disabled"> Hits</option>
<option value="50">50</option>
<option value="100">100</option>
</select>

<input id="BlastSearch" type="text" name="BlastSearch" value='' />
<input type="submit" name="submit" value="submit" />
<button type="reset" value="Clear">Clear</button>
</form>
<?php
session_start();
require_once '../secure/database.php';
$mysqli = new mysqli($dbhost,$dbuser,$dbpass,$dbname);
}

//Insert the values into the database

if(isset($_POST['submit'])){

//declare variables to what the user defines them as
$db = $_POST['database'];
$evalue = $_POST['evalue'];
$sequence = $_POST['BlastSearch'];

//insert the values into the database
$mysqli->query("INSERT INTO `Job` (`uid`, `input`, `status`, `start_time`, `finish_time`) VALUES ('1', '" . $sequence . "', 'running' , NOW(), NOW())");

$mysqli->query("INSERT INTO `BLAST`(`database`, `evalue`, `job_id`) VALUES ('" . $db . "','" . $evalue . "', '1')") or die(mysqli_error($db));



}
?>

我收到的错误:您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 ''job_id',database, evalue) 附近使用的正确语法 VALUES ('56','0.001', 'Eukaryota')' 第 1 行

最佳答案

if($mysqli->query("INSERT INTO `BLAST`(`database`, `evalue`, `job_id`) VALUES ('" . $db . "','" . $evalue . "', '".$mysqli->insert_id."')")) {
echo "Error description: " . mysqli_error($mysqli);
}

1) 将硬编码的“1”更改为使用 $mysqli->insert_id。您需要插入第一个查询生成的正确的 job_id:

参见:http://php.net/manual/en/mysqli.insert-id.php

2) 在 job_id 值的包装器中将反引号更改为单引号:更改:`".$mysqli->insert_id."`' ".$mysqli->insert_id."'。请注意,我们正在将反引号包装器更改为单引号包装器。

3) 将正确的变量传递给mysqli_error($mysqli) 函数。传入 $mysqli 而不是 $db

4) 更改插入查询中的 job_id 包装器以使用反引号,而不是单引号。

关于php - 插入mysql数据库无法从php运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30017123/

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