我正在尝试学习编写查询的最佳方法.我也理解保持一致的重要性.到现在为止,我已经随机使用了单引号,双引号和后退,没有任何实际想法.
例:
$query = 'INSERT INTO table (id, col1, col2) VALUES (NULL, val1, val2)';
Run Code Online (Sandbox Code Playgroud)
此外,在上面的例子中,考虑table可能是变量.
这是什么标准?你是做什么?
我一直在这里阅读类似问题的答案大约20分钟,但看起来这个问题没有明确的答案.
我正在尝试执行一个简单的MySQL查询,如下所示:
INSERT INTO user_details (username, location, key)
VALUES ('Tim', 'Florida', 42)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
错误1064(42000):您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便
'key) VALUES ('Tim', 'Florida', 42)'在第1行附近使用正确的语法
我该如何解决这个问题?
我有一个表名板,我正在尝试使用当前代码插入数据
function createBoard( $name, $desc ) {
try {
$sth = $this->getLink()->prepare( "INSERT INTO boards(id,memberid,name,desc,datecreated,isactive)
VALUES(?,?,?,?,?,?)" );
$uuid = $this->uuid();
$memberid = 1;
$date = Utils::getDate();
$isactive = 1;
$sth->bindParam( 1, $uuid );
$sth->bindParam( 2, $memberid );
$sth->bindParam( 3, $name );
$sth->bindParam( 4, $desc );
$sth->bindParam( 5, $date );
$sth->bindParam( 6, $isactive );
return $sth->execute();
} catch( PDOException $e ) {
/*
* save the error to the error log defined as @ERROR_LOG
*/
file_put_contents( ERROR_LOG, ( "\n" . Utils::getDate() …Run Code Online (Sandbox Code Playgroud) 我已经将一个csv导入MySQL.PHPMyAdmin帮助创建了一个名为TABLE 8的表(带有空格).
当我尝试在SQL中重命名时:
RENAME TABLE 8 to gender
Run Code Online (Sandbox Code Playgroud)
我收到错误:
#1064 - 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 '`TABLE 8` to `gender`' at line 1
Run Code Online (Sandbox Code Playgroud)
我试过回蜱,引号......看似一切......
我想这是导致问题的空间,但我没有想法.
mysql_query("INSERT INTO dictionary ('word', 'definition') VALUES ('".$word."','".$definition."');")
Run Code Online (Sandbox Code Playgroud)
那只是不会执行,当我echo- 它得到这个:
INSERT INTO dictionary ('word', 'definition') VALUES ('monkey','monkey');
Run Code Online (Sandbox Code Playgroud)
因此值得正确地被带入其中,如果我出去,mysql_error()我得到:
您的SQL语法有错误; 查看与您的MySQL服务器版本对应的手册,以便在第1行''word','definition'VALUES('monkey','monkey')附近使用正确的语法
有任何想法吗?我很难过.
这个查询出了什么问题?
SELECT
`category`,
(
SELECT `name`
FROM `city_names`
WHERE `city_code`=`units`.`city_code`
)as `cityName`,
`email`
FROM
`units`
WHERE
(
SELECT COUNT(*)
FROM `pesquisaRH`
WHERE `unit_code` = `units`.`unit_code`
)=0 AND
(
(`category` LIKE `%central%`) OR
(`category` LIKE `%DPM%`) OR
(`category` LIKE `%DPC%`) OR
(`category` LIKE `%DIC%`)
)
Run Code Online (Sandbox Code Playgroud)
它返回给我这个错误:
#1054 - Coluna '%central%' desconhecida em 'where clause'
Run Code Online (Sandbox Code Playgroud)
它似乎是在列名中搜索模式而不是其值.
我想找到没有回答问题的单位(在搜索"pesquisaRH"表时计数为0的单位)并且在其类别名称中有四个指定模式之一(%central%,%DPM%,%DPC %或%DIC%); 然后,返回他们的类别,他们所在城市的名称和他们的电子邮件.
我试图运行以下查询,但我不确定我的应该是不是,$ form_id =记录的列,$ user_id是名为cf_id的记录的主键.
$ querydate将在稍后的脚本中回显,因为它从记录中拉出等于$ form_id和$ user_id的日期.
$querydate = mysql_query("SELECT '$form_id' FROM email_history WHERE cf_id = '$user_id'") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
编辑>>>>>>
在尝试了下面的一些解决方案之后,它似乎工作正常,但不是将日期存储在表单名称下,而是我得到了回声,所以我不确定现在发生了什么::资源ID#120:资源id#121:资源ID#122:资源ID#123
该表的设置类似于以下内容:
[USER_ID] [FORM_ID1212212] [FORM_ID1212112]
[1] [2-1-2012] [2-1-2012]
[2] [1-1-2012] [1-1-2012]
Run Code Online (Sandbox Code Playgroud) 在这样的声明中;
$sql = "SELECT distinct `term`,count(*) as count
FROM {$temp_table_name}
group by `term` order by count DESC";
Run Code Online (Sandbox Code Playgroud)
在字段名称'term'周围使用后退字符(`)给我买什么?出于性能原因,是否使用了后退?或者它是否适用于某种SQL注入保护?
注意:在我提交问题之后,我意识到反引号字符没有显示在字段名称'term'周围 - 就在stackoverflow上.我不知道如何让它出现在问题体中.