标签: php

SELECT .. WHERE column IN (..) 查询的解析和绑定变量

我希望确保 php web 应用程序中的所有查询都正确使用了绑定变量,以尽量减少对查询的解析。

我想知道 Oracle 如何解析将列与值列表进行比较的查询。Oracle 会认为这些语句是相同的,还是列表必须在绑定变量内?

select char from alphabet where char not in ('a', 'b');

select char from alphabet where char not in ('c', 'd');
Run Code Online (Sandbox Code Playgroud)

如果列表的内容必须在绑定变量中,是否可以使用单个变量来完成,或者必须将列表中的每个项目放在一个单独的变量中?

select char from alphabet where char not in (:list);

select char from alphabet where char not in (:c1, :c2);
Run Code Online (Sandbox Code Playgroud)

如果后者为真,列表中具有不同项数的查询是否仍被认为具有相同的结构?

select char from alphabet where char not in (:c1, :c2);

select char from alphabet where char not in (:c1, :c2, :c3);
Run Code Online (Sandbox Code Playgroud)

oracle parse php

2
推荐指数
1
解决办法
1281
查看次数

如何根据 SELECT 语句将数据从一台 MySQL 服务器复制到另一台服务器(然后从原始服务器中删除数据)?

我有一个非常大的日志表,我想从中复制行,将它们放入新服务器上的相同表结构中。我不想复制所有内容,只复制旧行,以便主服务器上的表保持较小。所以我必须选择我想要的数据并且只移动(和删除)它。

请记住,有很多数据,mysqldump如果不需要,我不想用 a 复制所有数据,尤其是在复制表时它会锁定表。

我想出的最好的是一个 PHP 脚本,我将其作为暂定答案发布,尽管我确定它不是最佳选择。

mysql mysqldump php

2
推荐指数
1
解决办法
1万
查看次数

MySQL 和 PostgreSQL 在编写 SQL 查询方面有什么区别?

除了性能和安全性之外,MySQL 和 Postgres 之间真的有什么区别吗,比如 SQL 查询、内置函数、过程等等?

我问这个是因为我熟悉 PHP 和 MySQL (phpMyAdmin) 但不熟悉 Postgres (phpPgAdmin)

mysql postgresql phpmyadmin php

2
推荐指数
1
解决办法
6315
查看次数

PhpMyAdmin 导入错误-MySQL 服务器已消失/无法识别的关键字

因此,我从 PHPMyAdmin 导出了一个 MySQL 数据库(我从 Windows 8 计算机上的 IIS Express 中访问该数据库),并且尝试将此数据库导入到另一台计算机上,但是在那台计算机上我收到以下错误:

错误 警告1 警告2

请帮忙。我需要能够恢复这个数据库,但我不知道如何解决这个问题。

我尝试进入 sql 文件并更改 sql 文件中的外键行(它设置为 0),但这没有什么区别。哪里设置为ON?我无法弄清楚这一点。

mysql phpmyadmin php import

2
推荐指数
1
解决办法
2万
查看次数

在 mySql 中搜索带有空格的文本与 Query 匹配

我想用 [space] (Ascii 32) 作为其中的一部分在 mysql DB 中搜索文本。但我没有得到正确的结果。

我的 MySql 查询是:

SELECT count(id) as total
    , MIN(product_price) as min_price
    , MAX(product_price) as max_price 
FROM `products_details` 
WHERE subcat_id = 1026 
    AND MATCH(alternate_name, product_desc, keywords)
    AGAINST ('+moto +g +plus +(>mobile <mobiles)'; IN BOOLEAN MODE)
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

AGAINST ('+moto +g +plus +(>mobile <mobiles)'

我想moto g plus使用上面的查询搜索字符串移动。我想在g. 例如,moto "SPACE"g"SPACE"

我尝试了以下 2 个解决方案,但它不起作用。

[[:空间:]]

AGAINST ('+moto +[[:space:]]g[[:space:]] +plus +(>mobile <mobiles)'

AGAINST ('+moto +\\ g\\ +plus +(>mobile <mobiles)' ==> 我在此查询中的 …

mysql subquery php mysql-5.6

2
推荐指数
1
解决办法
6138
查看次数

为什么 ON DUPLICATE KEY 没有按预期工作?

在开始之前,我不是专业的 Web 开发人员。我是使用 google 和StackOverflow自学的。

所以我最近将我的网站从共享主机转移到了 VPS。

我的提供商将我的网站/文件移至我的新主机。两者都运行 cPanel。

我有一个脚本,它在我的旧主机上运行得非常好-

INSERT INTO `database`.`table`
    (`UUID`, `UpdateDate`, `JoinDate`) 
VALUES 
    ('$uuid',NOW(),NOW())
ON DUPLICATE KEY UPDATE
   `UpdateDate` = NOW()
Run Code Online (Sandbox Code Playgroud)

问题是它在我的新服务器上不再起作用。

我认为的问题是它没有更新或插入,因为没有更新该表中的所有列。

我创建了两个测试表,表 A 包含上面 UUID、UpdateDate、JoinDate 中的 3 列,第二个表 B 包含 UUID、用户名、UpdateDate、JoinDate 中的 4 列。

UUID 在两个表中都是唯一的和主要的。

表 A - 该表按预期工作。 表 A - 该表按预期工作

表 B - 由于额外的列用户名,该表不会插入/更新。 表 B - 这不起作用,因为它有一个名为用户名的额外列

知道为什么此查询不适用于表 B 吗?运行查询时是否必须插入/更新每个表列?这是我需要在主机上更改的 PHP 设置吗?

抱歉,如果我没有提供所有信息,这是我的第一个 DBSE 问题。

CREATE TABLE TestUserA` 
( UUID varchar(40) NOT NULL, 
  UpdateDate datetime NOT NULL, 
  JoinDate datetime NOT NULL 
) ENGINE=MyISAM DEFAULT …
Run Code Online (Sandbox Code Playgroud)

mysql phpmyadmin php

2
推荐指数
1
解决办法
2120
查看次数

使用 SQL 在表中输入精确值

我需要将特定值插入到我正在使用 SQL 处理的表中(请参阅下面的函数):

INSERT INTO *Table Name* (...) VALUES(...); 
Run Code Online (Sandbox Code Playgroud)

将要存储在这个表中的值是涉及另一种编程语言的值,这些语言有很多奇怪的符号,包括单个反斜杠、*、美元符号等。

如何准确插入该表中的值?

例如,当我输入 '\2' 时,它需要在表中返回 \2 而不是 2。我无法手动输入两个反斜杠来获取 \2。这是因为我通过 HTML 接收来自另一个用户的输入并使用 PHP 将其发送到我的表。我遇到的问题是,这些 SQL 中的特殊字符正在被输入,这不是我希望它们作为值的方式。

有没有办法用预先调用的某个字符串函数准确地键入这些值?这样做的其他方法将不胜感激!

数据库的附加信息:

  • 服务器:本地主机通过 UNIX 套接字

    服务器类型:MySQL

    服务器连接:未使用 SSL 文档

    服务器版本:5.6.49-cll-lve - MySQL 社区服务器 (GPL)


潜在答案:$mysqli 是否定义如下?(我称之为 $db。) $mysqli=mysqli_connect(...);

因此,该文字添加如下:

$query = "INSERT INTO Table (C1, ... Cn) VALUES('$C1', ... '$Cn')"; 
$stmt = $mysqli->prepare($query);
$stmt->bind_param("ss", $C1, ..., $Cn);
$stmt->execute();
mysqli_query($db, $query);
Run Code Online (Sandbox Code Playgroud)

mysql php

2
推荐指数
1
解决办法
122
查看次数

这个表中的这种数据/字段需要在MYSQL中规范化吗?

我在 MYSQL 中有这个uom表:

ID 乌姆
1
2
3

MYSQL 中的产品表:

ID 编号 标题 乌姆
1 19421 测试1 1:1:10.00,3:1:56.17
2 7878 测试2 1:1:24.33
3 123456 测试3 2:12:63.22,3:1:14.00
4 666565 测试4 1:1:10.00,2:12:20.00,3:1:30.00

产品表是否需要标准化?有人说这个表没有多值字段/数据......这是正确的吗?简而言之,产品表包含产品的名称、标题和 uom列Uom 列包含存储单位、数量包以及基于单位的价格。这意味着每种产品都有不同的单位和基于单位的价格。

例如,test4 产品具有三个单位 1:1:10.00, 2:12:20.00, 3:1:30.00。我们以第一个单元为例:1:1:10.00

  • 第一个数字是单位表中单位的 ID
  • 第二个数字是包装数量
  • 第三个数字是价格

所以,1:1:10.00是一个单位。2:12:20.00并且3:1:30.00是不同的单位。所以,test4一共3个单元。

mysql phpmyadmin php

2
推荐指数
1
解决办法
229
查看次数

如何选择 NOW 在字段中两个日期之间的记录?

我已经到处搜索了,我似乎只找到了如何获取单个日期在两个“外部”日期之间的记录。

我想了解如何选择当前日期介于 startDate 字段中的值和 endDate 字段中的值之间的记录。

到目前为止我所拥有的(PHP):

$now = new DateTime();
$sql = "
    SELECT content, image, imageHeight, imageWidth, link, linkDescription 
    FROM news 
    WHERE appearanceDate < $now  
      AND $now < termDate 
    ORDER BY appearanceDate DESC
";
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

mysql php

1
推荐指数
1
解决办法
2万
查看次数

删除不同表中的记录

我需要删除所有三个表中 UserIndex = 1 和 ItemNumber = 5202 的记录,所有这些记录都在单个查询中。我正在使用 SQL 2008 R2。

表用户信息1

用户索引 项目编号 项目计数
1 5202 99
1 1600 50
2 155 2
3 125 60

表用户信息2

用户索引 项目编号 项目计数
8 1265 50
4 1899 41
1 5202 99
3 125 60

表用户信息3

用户索引 项目编号 项目计数
6 5205 85
1 6666 41
3 4455 44
1 5202 50

我尝试将此查询与两个表一起使用,但它不起作用:

DELETE ItemInfo1, ItemInfo2 
FROM ItemInfo1 
LEFT JOIN ItemInfo2 
    ON ItemInfo1.UserIndex = ItemInfo2.UserIndex 
WHERE ItemInfo1.UserIndex = 1;
Run Code Online (Sandbox Code Playgroud)

sql-server delete sql-server-2008-r2 php xampp

1
推荐指数
1
解决办法
74
查看次数