mysql - INSERT INTO MySQL 语句失败

标签 mysql sql

我正在 PHP 中动态形成 MySQL 语句,但无法弄清楚为什么这个语句无法执行:

    INSERT INTO users ( `email`, `password`, `first_name`, `last_name`, `url`,
   `description`, `media`, `tags`, `zip`, `country`, `lat`, `lon`, `city`, `state`, 
   `datetime_joined`, `API_key`, `verified`, `likes`, `email_confirmation_code`,
   `email_confirmed`) VALUES ( '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0b69796a656564654b69796a656564656f6479786e7225686466" rel="noreferrer noopener nofollow">[email protected]</a>', 
   'f1e5aeb519396a87bd2a90e6a680d18713b1ecbe', 'Brannon', 'Dorsey',
   'brannondorsey.com', 'description', 'sculpture, photography, creative code',
   'saic, chicago, richmond, young arts', '60601', 'us', '41.8858', '-87.6181',
   'Chicago', 'Illinois', '2013-06-26T23:50:29+0200',
   '7e852a3e97257b563ffbb879d764ce56110ccb70', '0', 
   '0','c35bad0dc9b058addbf47eef8dda2b124528751e', '0')

我已经检查了要插入的列的拼写和格式以及表名称,一切都正确。有谁知道会发生什么?我并不是想让其他人忙于工作,我只是不明白这里发生了什么。

这是我创建表格的语句:

    CREATE TABLE users (
    id mediumint(8) unsigned NOT NULL auto_increment,
    email varchar(255) default NULL,
    password varchar(255),
    url TEXT default NULL,
    description TEXT default NULL,
    city varchar(255),
    state TEXT default NULL,
    country varchar(100) default NULL,
    zip varchar(10) default NULL,
    datetime_joined varchar(255),
    media varchar(255) default NULL,
    tags varchar(255) default NULL,
    API_key varchar(255),
    verified mediumint default NULL,
    first_name varchar(255) default NULL,
    last_name varchar(255) default NULL,
    API_hits mediumint default NULL,
    API_hit_date varchar(255),
    likes mediumint default NULL,
    lat varchar(30) default NULL,
    lon varchar(30) default NULL,
    email_confirmation_code varchar(255),
    email_confirmed mediumint default NULL,
    PRIMARY KEY (id),
    FULLTEXT(`first_name`, `last_name`, `email`, `url`, `description`, `media`, `tags`, `city`, `state`, `country`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

我尝试从所有数字中删除单引号,但这不起作用。另外,最奇怪的是,当我将失败的查询回显到浏览器中,然后将其复制并粘贴到 PhpMyAdmin 的 sql 输入框中时,该行插入...有什么想法吗?

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 '\'<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="731101121d1d1c1d331101121d1d1c1d171c0100160a5d101c1e" rel="noreferrer noopener nofollow">[email protected]</a>\', \'f1e5aeb519396a87bd2a90e6a680d18713b1ecbe\', \'B' at line 1

最佳答案

我深入研究了为动态构建查询所做的所有字符串操作,发现我将 real_escape_string 用于查询的一部分,而不仅仅是查询中的值。这解释了为什么当从浏览器复制时查询有效。

关于mysql - INSERT INTO MySQL 语句失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331248/

相关文章:

mysql - 使用 order by 和 limit 的奇怪结果

mysql - Azure Mariadb TX 2.0 连接不起作用

sql - 基于最常见值的分组

sql - Rails/SQL : Find attributes with same value but different capitalization

sql - 如何获取调用 SQL 代理作业的用户?

php - 无法根据从 php 列表框中获取的值获取 mysql 记录

MySQL WHERE LIKE 由单词和逗号组成

php - 使用第一个表的自动递增 id 更新第二个表

sql - 查找连接表中缺失的值,纠正 SQL Server 2008

c# - 如何在列表框中显示查询结果?