如果列存在,我正在尝试将表的列设置为每个行中的字符串。但是,我正在收到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
}
}
我收到的语法错误:
信息_schema
db1
您的SQL语法中有错误;检查与您的MySQL Server版本相对应的手册,以了解要使用的正确语法')
开始
更新信息
在第5行中设置borrater ='****'
'>
我知道这一定很小,但是我已经被困了一段时间了,似乎找不到我的错误。
尝试查询的语法 -
IF EXISTS (SELECT DISTINCT `info`
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('borrower')
AND TABLE_SCHEMA = '$db')) THEN
UPDATE `info`
SET `borrower` = '****'
WHERE `id` = '$id'
END IF;
我在IF条件和End if
的末尾添加了Then
,而不仅仅是if
,然后将select
删除到。您想选择什么?这仅是更新条款。
update
此处的示例
您不能像普通查询一样使用它。控制结构,例如或 虽然仅在存储过程或功能中允许。
mysql面板
delimiter $$
create procedure YourIfConditionSP()
begin
IF EXISTS (SELECT DISTINCT `info`
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME IN ('borrower')
AND TABLE_SCHEMA = '$db') THEN
UPDATE `info`
SET `borrower` = '****'
WHERE `id` = '$id';
END IF;
end $$
delimiter ;
您必须更改PHP代码以调用存储过程。
php
//run the stored procedure
$result = mysqli_query($connection,
"CALL YourIfConditionSP") or die("Query fail: " . mysqli_error());
如何从php代码中调用MySQL存储过程?