这里有新手。我有关于插入语法的问题。我希望我的表看起来像ID作为主键(AI,NN,),我可以在文档上输入具有相同案例和名称的多个项目。我目前正在使用一个php脚本,从结果中提取这些信息,将它们插入到数据库中,但是在语法方面存在问题。
ID| Case| Name| Document| Date
----------------------------------------------
1 233 alex ITR 2015-1-1
2 233 alex ITR 2015-1-1
3 233 alex NULL 0000-0-0
4 234 ben COC 2015-3-3
5 234 ben VAT 2015-3-3
6 234 ben NULL 0000-0-0
我的代码是这样的:
$sql="INSERT INTO table1 (Case, Name, Document, Date) VALUES ('$casenum','$name','$doc1-5(*this is where I dont know what todo)','$date1-5(this also)
答案 0 :(得分:0)
如果您只有特定的文件和日期列表,那么您只能使用数组吗?
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$docs =('ITR', 'COC', etc);
$date =('2015-1-1', etc);
// prepare and bind
$stmt = $conn->prepare('INSERT INTO table1 (Case, Name, Document, Date) VALUES (?, ?, ?, ?)');
$stmt->bind_param('ssss', $casenum, $name, $docs[0-4], $date[0-4]);
$stmt->execute();
$stmt->close();
$conn->commit(); //otherwise your data won't save
还要确保始终使用prepare和bind_param以防止sql注入 - 这一点至关重要,否则你的整个数据库可能会搞砸
答案 1 :(得分:0)
如果你想在一个sql语句中添加多个值,你可以在最后安排它们:
INSERT INTO table1 (Case, Name, Document, Date) VALUES (233, 'alex', 'ITR', '2015-1-1') , (233, 'alex', 'NULL', 0000-0-0) , …
如果你有一个像这样的$values
数组:
Array (
Array (
[Case] => 233,
[Name] => 'alex',
[Document] => 'ITR',
[Date] => '2015-1-1'
),
…
)
您可以考虑做类似的事情:
$values = // def you array here
$texts = array_map( function($value) { return "({$value['Case']}, '{$value['Name']}', '{$value['Document']}', '{$value['Date']}')"; },
$values );
$sql = 'INSERT INTO table1 (Case, Name, Document, Date) VALUES ' . implode(',', $texts);
答案 2 :(得分:0)
听起来您希望多次重复使用该名称,而该人的文档和日期可能会发生变化。所以你真的只想为2个人插入记录,但他们有多个文件要插入。你的SQL并没有真正规范化,并且可能有更好的方法来做到这一点,但为了避免混淆,你现在可以如何完成它。
$values = array($case, $name, $document, $date)
INSERT INTO table1 (case, name, document, date) VALUES (implode(", ", $values);
值数组可以根据需要重复多次,但这是第一条记录的样子。您可以使用与MySQL插入语句一样插入的顺序,然后数组中的下4个项目将是第二个插入,接下来的4个将是第3个,等等。
你必须重复这个案例和名称,所以这个数组的一个非常粗略的例子可能如下所示:
$values = array($case0, $name0, $document0, $date0, $case1, $name1, $document1, $date1)
我会使用array_push()并将每个项目推入每个循环以构建数组。
希望这会有所帮助。当你开始使用mysqli并开始进入OOP时,你可以通过更简单的方式做到这一点。但就目前而言,这应该可以完成工作。