出于某种原因,当我写入"text"类型的列时,我的查询搞砸了.这是一个例子:
Describe messages;
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
title varchar(255) YES NULL
body text YES NULL
to text YES NULL
content_type varchar(255) YES NULL
is_sms tinyint(1) YES NULL
user_id int(11) YES NULL
created_at datetime YES NULL
updated_at datetime YES NULL
Run Code Online (Sandbox Code Playgroud)
然后我尝试插入:
INSERT INTO messages (id,title,body,to) VALUES ('1','Test Message','This is a test message. This is a test message. This is a test message. This is a test message.', 'an email' );
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这会导致一般的MySQL语法错误.如果我删除"to"列并且它是查询中的相应值,则查询工作正常.
有任何想法吗?
如果我删除condition=\''.$this->condition.'\',它的工作线.
如果我在那里,会出现以下错误消息:
您的SQL语法有错误; 检查与您的MySQL服务器版本对应的手册,以便在'condition ='unknown',promotional ='0',website ='0',quantity ='1','在第7行附近使用正确的语法
mysql_query('UPDATE products SET
name = \''.$this->name.'\',
description = \''.$this->description.'\',
brand = \''.$this->brand.'\',
model = \''.$this->model.'\',
price=\''.$this->price.'\',
condition=\''.$this->condition.'\',
promotional=\''.$this->promotional.'\',
website=\''.$this->website.'\',
quantity=\''.$this->quantity.'\',
service=\''.$this->service.'\'
WHERE id = \''.$this->id.'\' '
Run Code Online (Sandbox Code Playgroud) 使用以下代码时:
CREATE TABLE stats
(
username varchar(12),
starting text,
ending text,
UNIQUE (username)
)
Run Code Online (Sandbox Code Playgroud)
要么
CREATE TABLE stats
(
username varchar(12),
starting text,
ending blob,
UNIQUE (username)
)
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第1行的"起始文本,结束文本,UNIQUE(用户名)"附近使用正确的语法
难道我做错了什么?在添加ending text查询内部之前,它工作得很好.
为什么我尝试按查询执行订单,我总是收到错误,告诉我通过ORDER BY'order'DESC检查语法....这是我的查询:
SELECT * FROM posts ORDER BY order DESC;
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么??
据我所知,不需要反引号,例如查询中的表名:("INSERT INTO table_name ....").另外,据我所知,下划线是在名称中使用的完全可接受的语法:foo_bar.那么我的问题是,为什么这个查询失败了:
mysql_query("INSERT INTO quick_links WHERE ...etc");
Run Code Online (Sandbox Code Playgroud)
当这个查询完美地工作时:
mysql_query("INSERT INTO `quick_links` WHERE ...etc");
Run Code Online (Sandbox Code Playgroud)
是"快速"还是"链接"保留字??? 我不这么认为,但话说回来,我对MySQL很新,所以我道歉.另外,在某些"存储引擎"中使用必要的反引号(引用phpMyAdmin作为术语)?我碰巧使用"InnoDB",如果这有任何区别.
谢谢你的答案,我是MySQL的新手,我想确保我理解这些细微差别.
我的完整查询是这样的:
mysql_query("INSERT INTO `quick_links` VALUES (
'$user_id', '$ql_name', '$ql_url', '$ql_img'
)");
Run Code Online (Sandbox Code Playgroud)
$ ql_url和$ ql_name是通过$ _POST获得的,然后在查询中使用之前使用trim和mysql_real_escape_string进行清理.$ ql_img只是一个url,指的是一个上传缩略图的目录,而$ user_id就是在那里识别登录的特定用户.两个查询完全相同,从字面上看,除了周围的反引号TABLE_NAME.
每日提示:backticks像老板一样使用!即使在你的笔迹!
更新:如果您采纳上述建议,则无需再阅读以下内容!认真!
问题:
我对此有点恼火.我可以创建一个包含其命名列的表key和value,但是当我想用这些列工作,我会看到一个非常漂亮的语法错误并解释说这些都是reserved keywords为MySQL.
我的问题是:有人知道为什么会这样吗?为什么我首先没有收到语法错误?是否有任何理由支持?
这个表" Trade"带有列" call",Call包含values(C,P)从CSV加载时我想更新来自java程序的Trade if call='C' then call='CE'和
if call='P' then call='PE'
我发现这可以使用2个查询完成.就像这样
update Trade set call='CE' where call='C';
update Trade set call='PE' where call='P';
Run Code Online (Sandbox Code Playgroud)
无论如何这可以在单个查询中完成吗?
好的,在我最初的问题之后又回来了.但是,这一次,我实现了一个错误回调,只是为了帮助我在这里跟踪,我将给出代码和错误回调:
$Query = mysqli_query($Connection, "INSERT INTO database (ip, isp, user) VALUES ('$IP', '$ISP', '$User')");
Run Code Online (Sandbox Code Playgroud)
这是错误:
错误:SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在'database(ip,isp,user)VALUES('184.107.171.51','AS32613 iWeb Technologies In'第1行附近使用正确的语法
关于这里发生了什么的任何线索?今天早些时候,我修复了旧问题,然后在我尝试添加以检查数据库中是否存在该值之后,它就开始了.
无论是消极还是积极的任何帮助都非常感谢,谢谢.
我是 PHP 新手。当我尝试将下拉列表中的值插入到显示一些错误的数据库表时
编码
<html>
<head>
<title>OPTION</title>
</head>
<body>
<form action="option.php" method="get">
Name :<select name="name">
<option value="name1">name1</option>
<option value="name2">name2</option>
<option value="name3">name3</option>
<option value="name4">name4</option>
</select><br>
<input type="submit" name="submit" value="Insert">
</form>
</body>
</html>
<?php
if(isset($_GET['submit']))
{
$name=$_GET['name'];
$c=mysql_connect("localhost","root","");
mysql_select_db("test");
$ins=mysql_query("insert into option (name) values ('$name')",$c);
if($ins)
{
echo "<br>".$name."inserted";
}
else
{
echo mysql_error();
}
}
?>
Run Code Online (Sandbox Code Playgroud)
当我尝试显示此错误时
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在第 1 行的“选项(名称)值(“名称3”)附近使用的正确语法
谢谢..,
当我尝试创建我的产品实体时,我得到以下错误:
执行'INSERT INTO产品时出现异常(代码,名称,描述,订单,库存,条目,创建,制造,到期,开始_数量,购买价格,开盘价格,价格,可见,停止,查看,关于,brand_id,groups_id,measurement_id, gender_id)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)'与params [ 432211,"trolly bag","description",0,2,"2016-02-01 15:02:57","2016-02-01 15:02:57","2011-03-08"," 2016-09-12",2,100,100,100,1,0,0,"约",2,2,null,null]:
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行的'order,stock,entry,created,manufacture,expire,opening_quantity,purchase_p'附近使用正确的语法
产品实体:
在这里输入代码命名空间AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="products")
* @ORM\HasLifecycleCallbacks
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository")
*/
class Product
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="integer")
*/
protected $code;
/**
* @ORM\Column(type="string", length=100)
*/
protected $name;
/**
* @ORM\Column(type="text")
*/
protected $description;
/**
* @ORM\Column(type="integer")
*/
protected $order; …Run Code Online (Sandbox Code Playgroud)