PHP 中 SQL 的语法错误
Syntax error with SQL in PHP
我正在尝试将 table 的列设置为每行中的一个字符串(如果该列存在)。但是,我收到 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
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 ')
BEGIN
UPDATE info
SET borrower = '****'
' at line 5
我知道它一定是非常小的东西,但我已经卡了一段时间,似乎找不到我的错误。
尝试使用此语法查询-
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 条件的末尾添加了 Then
和 End if
而不是仅 if
,并且我删除了 select
到。你想 select 做什么?它只是更新子句。
更新
示例来自 here
you can't use it like a normal query. Control structures like IF or
WHILE are only allowed in stored procedures or functions.
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());
How to call a MySQL stored procedure from within PHP code?
我正在尝试将 table 的列设置为每行中的一个字符串(如果该列存在)。但是,我收到 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
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 ')
BEGIN
UPDATE info
SET borrower = '****'
' at line 5
我知道它一定是非常小的东西,但我已经卡了一段时间,似乎找不到我的错误。
尝试使用此语法查询-
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 条件的末尾添加了 Then
和 End if
而不是仅 if
,并且我删除了 select
到。你想 select 做什么?它只是更新子句。
更新
示例来自 here
you can't use it like a normal query. Control structures like IF or WHILE are only allowed in stored procedures or functions.
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());
How to call a MySQL stored procedure from within PHP code?