【发布时间】:2016-10-23 08:18:39
【问题描述】:
如果该列存在,我正在尝试将表的列设置为每行中的字符串。但是,我收到 SQL 语法错误,无法查明问题到底是什么:
while($db = mysqli_fetch_array(mysqli_query($conn, "SHOW DATABASES"))){
$id = $db['id'];
$sql = /** @lang text */
"SELECT IF( EXISTS(
SELECT DISTINCT `info`
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('borrower')
AND TABLE_SCHEMA = '$db'))
BEGIN
UPDATE `info`
SET `borrower` = '****'
WHERE `id` = '$id'
END";
$query = mysqli_query($conn, $sql);
if (!$query){
// Deal with error
}
}
我收到的语法错误:
information_schema
db1
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的 ')
BEGIN
UPDATE info
SET borrower = '****'
' 附近使用正确的语法
我知道它一定是很小的东西,但我已经卡了一段时间,似乎找不到我的错误。
【问题讨论】:
-
begin/end仅在存储过程中有效,在一般的select查询中无效。在select中,您尝试做的事情是不可能的。 select 仅将数据拉出表。它不能更改表格或任何其他表格的内容。你需要update ... join,即便如此,它也只能针对特定字段,而不是从选择中提取的任意字段。 -
那么我应该把我的
UPDATE ...部分放在哪里? -
你在那里做什么?查询数据库架构并将其放入表中 - 这看起来非常错误
-
您标记了 MySQL 和 SQL-Server,但您的错误和代码表明它是 MySQL。如果是 SQL-Server,你可以去掉第一个
SELECT语句,我相信它会起作用。 -
@MarcB BEGIN/END 是有效的,因为它与 OP 的 IF 语句有关,不是吗?我认为问题在于
SELECT IF(etc...无效。删除第一个SELECT,如果满足条件,您只剩下一个运行UPDATE的IF 语句。
标签: php mysql syntax-error