php – INSERT INTO,ON DUPLICATE KEY,WHERE语法错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – INSERT INTO,ON DUPLICATE KEY,WHERE语法错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2831字,纯文字阅读大概需要5分钟。
内容图文
![php – INSERT INTO,ON DUPLICATE KEY,WHERE语法错误](/upload/InfoBanner/zyjiaocheng/796/b4c7aac058724ef8b0f1ccb75b4b0185.jpg)
参见英文答案 > MySQL ON DUPLICATE UPDATE with WHERE? 1个
这是我的代码:
INSERT INTO drivers (name, comments, start_time, end_time)
VALUES ('$name', '$comment', '$start', '$end')
ON DUPLICATE KEY UPDATE comments='$comment', start_time='$start', end_time='$end'
WHERE name='$name'
然后我得到这个错误:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘WHERE name=”’ at line 1
以下是提交到此SQL语句的表单的代码:
<form *posting to seperate submit page*>
<table>
<tr>
<td>Driver:</td>
<td class=results>
<select name="name">
<option value="">Pick one...</option>
<?php
$results2=mysqli_query($con,"SELECT id, name FROM drivers");
if (!$results2) {
die('Error2: ' . mysqli_error($con));
}
while($row = mysqli_fetch_array($results2)) {
echo "<option value='".$row['id']."'>".$row['name']."</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Driver not in dropdown. Type name here:</td>
<td class="results">
<textarea name="name" rows="1" cols="30" placeholder="Driver name"></textarea>
</td>
<tr>
<td>Start time:</td>
<td class="results">
<textarea name="start" rows="1" cols="10" placeholder="Start time"></textarea>
</td>
</tr>
<tr>
<td>End time:</td>
<td class="results">
<textarea name="end" rows="1" cols="10" placeholder="End time"></textarea>
</td>
</tr>
<tr>
<td>Comment:</td>
<td class="results">
<textarea name="comment" rows="3" cols="50" placeholder="Comment - Optional"></textarea>
</td>
</tr>
<tr>
<td><input type="submit" value="Submit" /></td>
</tr>
</table>
</form>
为清楚起见,这里是数据库创建表语句:
| drivers | CREATE TABLE `drivers` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`comments` varchar(255) DEFAULT NULL,
`start_time` time NOT NULL,
`end_time` time NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 |
我试图通过表单上的隐藏输入来提交ID但是因为我从下拉列表中选择了名称,所以它也不会提交ID,因为在提交之前你不会知道下拉列表中的哪个条目猜测.
编辑我以前尝试过没有WHERE子句,最后在数据库中结束:
+----+-------+----------+------------+----------+
| id | name | comments | start_time | end_time |
+----+-------+----------+------------+----------+
| 1 | Steve | test 7 | 09:14:00 | 22:00:00 |
| 2 | | test 10 | 09:30:00 | 21:00:00 |
+----+-------+----------+------------+----------+
第二行是前一个条目的“更新”,但是它刚刚添加了一个新条目,因此我有了WHERE子句.
解决方法:
从查询中删除WHERE name =’$name’,因为它会自动更新重复索引.
所以你的更新查询将是:
INSERT INTO drivers (name, comments, start_time, end_time)
VALUES ('$name', '$comment', '$start', '$end')
ON DUPLICATE KEY UPDATE comments='$comment', start_time='$start', end_time='$end'
注意:还要确保在将变量放入查询之前转义变量,因为它可能会导致黑客攻击和其他问题.
内容总结
以上是互联网集市为您收集整理的php – INSERT INTO,ON DUPLICATE KEY,WHERE语法错误全部内容,希望文章能够帮你解决php – INSERT INTO,ON DUPLICATE KEY,WHERE语法错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。