多列整数排序
我不知道我是否为此问题选择了适当的标题(如果不是,请相应地更改),但请考虑我正在使用的以下简化的表结构: ---------------------------------------------- | date | i | j | k | x | y | z | ---------------------------------------------- | 100209 | 1 | 2 | 3 | 4 | 5 | 6 | ---------------------------------------------- | 100210 | 2 | 3 | 4 | 5 | 6 | 7 | ---------------------------------------------- | 100211 | 0 | 1 | 2 | 3 | 4 | 5 | ------------------
0 2023-05-30
编程技术问答社区
SQLite适合并发阅读吗?
SQLITE数据库会在不锁定的情况下表现良好吗? 我正在尝试确定是否可以在PHP网站上使用它是否可行,该网站不会经常被"书写" - 大多数是从少数表中读取相同数据 解决方案 没问题.并发的阅读/写作实际上将被SQLite序列化,因此您不需要关心它. 有关详细信息: http://www.sqlite.org/lockingv3.html /p>
0 2023-05-30
编程技术问答社区
不管定义了什么数据类型,PHP sqlite都会返回所有的字符串
我正在使用内存数据库中的SQLite运行单元测试,并且我遇到了问题. 当我使用MySQL数据库执行测试时,以下比较正常 if ($item->user_id === Auth::id()) 如果数字不匹配,则它将评估为true.当我在内存数据库中使用sqlite时,条件语句将返回false,因为user_id属性是作为string而不是适当的int数据类型返回的. 我已经阅读了一些帖子和评论,说这对于php中的SQLite来说是可配置的事情,而其他人则说它无法更改.我想将内存SQLITE数据库用于测试,但是如果我无法更改此行为,则必须更改条件质量以使用==而不是更严格的===.如何更改sqlite查询的行为? 更新 我还尝试将其添加到SQLite配置 'sqlite' => [ 'driver' => 'sqlite', 'database' => env('DB_DATABASE', database_path('database
0 2023-05-30
编程技术问答社区
Laravel找不到sqlite的驱动程序异常
我正在使用 laravel ubuntu 17.4 .当我键入此命令时:php artisan migrate:refresh我会收到以下问题: [照明\数据库\ queryException] 找不到驱动程序(sql:select * sqlite_master type ='table'and name =迁移) [pDoexception] 找不到驱动程序 我尝试通过运行sudo apt-get install php7.1-sqlite3来安装sqlite驱动程序,但是我得到了以下问题: 阅读包列表...完成 建造依赖树 阅读状态信息...完成 E:无法找到软件包php7.1-sqlite3 E:找不到Glob'php7.1-sqlite3' 的任何包裹 E:找不到Regex'php7.1-sqlite3'的任何包裹. 我的php版本也是:PHP 7.1.5-1+deb.sury.org~yakkety+2. 解决方案 您确定SQLi
0 2023-05-30
编程技术问答社区
数据库 - 字符串作为主要键?
我开发了Laravel 5的应用程序,并在开发过程中使用SQLite.我想稍后再切换到更快的东西.我想将字符串作为用户表的唯一标识符.这是一个问题吗?例如用外国钥匙?还是自动插入整数没有区别? 解决方案 简短的答案:使用字符串作为主键是完全可以的. 漫长的答案:我们在选择字符串作为主要钥匙方面非常糟糕. 什么是优秀的主要钥匙候选人? 它应该是唯一的. 如果有的话,它应该很少发生变化. 现在,您可能认为您的字符串永远不会改变,并且它是非常独特的,直到它停止独特为止. 另一个(次要的)关注点是绩效.整数上的搜索,加入等要比字符串要快一些,这主要是由于长度(数字比字符串短,因此比较更容易). . 我会在主要键上使用什么字符串来思考,大多数时候是个坏主意 其他解决方案 字符串的索引与增量INT有很大不同,但是您可以将其作为主键而没有问题. 插入时的碰撞检测是您必须处理自己的问题,甚至在自动增量situaiton上都不存在. 从外
0 2023-05-30
编程技术问答社区
Laravel-致电未定义的方法照明\ database \ query \ builder :: user()
我忙于 raravel from Scratch:laravel from Scratch:更新记录和急切的加载.我遵循了TUT,但是在尝试在CardController中添加用户数据时,我会遇到此错误.我假设我错过了某个地方的卡用户关系中的一步,但是我已经观看了3次视频,并且我的数据库查询用户,卡和注释与视频完全匹配. 通过迁移创建用户表后,我需要执行另一个步骤吗? 错误 BadMethodCallException in Builder.php line 2345: 致电未定义的方法照明\ database \ query \ builder :: user() cardController代码
0 2023-05-30
编程技术问答社区
如何在sqlite中服用SQRT
这是使用mySQL的PHP​​查询.谁可以将此查询转换为sqlite查询? 查询: select SQRT(POW(latitude, 2) + POW(longitude, 2)) *110 as dist from route 最好的问候, 谢谢 解决方案 我在" Pascal"的帮助下完成了此操作. 查询变为: SELECT * FROM ( SELECT temperature, climate, temperatureTime, photoURL, (((latitude - 37.331689) * (latitude - 37.331689)) + (longitude - (-122.030731)) * (longitude - (-122.030731))) * (110 * 1
0 2023-05-30
编程技术问答社区
Laravel php artisan迁移不工作
当我尝试使用laravel中的" PHP Artisan迁移"时,我会收到2个错误: [ILLUMITAINS \ DATABASE \ QUERYEXECTION] SQLSTATE [HY000]:常规错误:26文件是加密的或不是数据库(SQL:SQL:SELECT * from SQLITE_MASTER,其中type ='type ='table ='table'and name = migrations) ) [PDOException] SQLState [HY000]:常规错误:26文件已加密或不是数据库 我在尝试迁移之前创建了一个存储/数据库.我还编辑了config/database.php,制作default=sqlite.我正在使用Windows并已安装sqlite3. 有人遇到过这个/知道如何超越它吗? 解决方案 我的结果相同,在我的情况下,/database/database.sqlite文件不是空的. 我删除了内容rera
0 2023-05-30
编程技术问答社区
在尝试从PHP脚本访问时,数据库被锁定
我正在编写与PHP后端通信的Android应用程序.后端数据库是SQLite3.问题是,我间歇性地遇到此错误PHP Warning: SQLite3::prepare(): Unable to prepare statement: 5, database is locked.我正在打开每个PHP文件中数据库的连接,并在脚本完成时将其关闭.我认为问题在于,一个脚本在写入时锁定了数据库文件,第二个脚本正在尝试访问它,但失败了.避免这种情况的一种方法是在所有PHP脚本之间共享连接.我想知道是否还有其他方法可以避免这种情况? 编辑: 这是第一个文件:
0 2023-05-30
编程技术问答社区
你是如何处理时区问题的?
对于调度系统,在来自来自多个源的移动源,Web,Client应用程序中的中央服务器数据库中保存客户端/事件的时区的最佳方法是什么? 您如何存储日期?警报,提醒等... 您如何处理DST设置? 如果客户到另一个位置旅行,您如何处理活动? 我需要解决方案来使用标签中的所有数据库. 解决方案 这些是我倾向于使用的策略的关键点. 每个日期都与系统内部进行UTC. 用户在其本地时区中显示了日期. 我们允许用户覆盖他们正在使用的时区,以防万一,他们希望保持时区一致. 使时区容易可见.用时间或作为列标题的一部分显示. 其他解决方案 UTC中的所有内容,以及偏移的另一列. 其他解决方案 将日期存储为UTC时间戳 - 向用户显示数据时转换为本地时间.
0 2023-05-30
编程技术问答社区
用SQLite3在php中创建新的数据库
如何使用sqlite 3? 在PHP中创建新数据库 $db = new SQLite3($dbname); 只是打开DB,但我想创建如果不存在. 解决方案 创建您确实使用new语句: // create or open (if exists) the database $database = new SQLite3('myDatabase.sqlite'); 如果您命名了一个不存在的数据库,则应创建.
0 2023-05-30
编程技术问答社区
PHP放弃了SQLite?
默认情况下,SQLite扩展名为PHP 5.0.开始 使用PHP 5.4,SQLite扩展只能通过PECL获得. 好吧,我在PHP编程方面相对较新,我想知道这引用了官方PHP网站的信息是什么意思? 我编写了一些运行sqlite而不是mySQL数据库的应用程序,如果将未来版本贬值,我很担心. 这意味着"从现在开始,只能通过pecl"? 我知道SQLite 将可用,但这并不意味着: PHP团队至少对PHP/SQLITE集成的未来发展的关注 我们可以期望Web托管提供商会错过安装SQLite扩展程序,因为默认情况下不再是? 有人在PHP"扔掉"向PECL时有经验吗? 预先感谢. 解决方案 我不是100%确定的,但是在我看来,PHP正在放弃对旧的 sqlite 5.4中的扩展名支持(较新,更好) sqlite3 扩展. 默认情况下,SQLite3扩展名为PHP 5.3.0. SQLite的主要好处是设置的简单性是多么简单,并且将其作为PHP
0 2023-05-30
编程技术问答社区
sqlite3和pdo_sqlite之间有什么区别
我将我的Web应用程序从MySQL迁移到SQLITE数据库.我发现有两个PHP扩展名与SQLITE通信: php_sqlite3.dll 和 php_pdo_sqlite.dll . 什么扩展更好?或另一个问题:这些扩展之间有什么基本差异? 解决方案 PDO是PHP中数据库连接的包装器.它旨在涵盖大多数数据库管理系统(MySQL,PostgreSQL ...)提供的功能,因此无论使用哪种DBMS,功能调用都是相同的.参见 http://php.net/manual/manual/manual/en/book.pdo.pdo.ppo.phpth/a>. php_pdo_sqlite.dll允许您使用PDO接口访问SQLITE数据库. 另一个库(php_sqlite3.dll)是它自己的界面,具有不同的函数调用.任何使用此情况的代码都只能访问SQLite数据库. http://php.net/manual/manual/enual/en/book.sqlite.sqlit
0 2023-05-30
编程技术问答社区
为什么在特定机器上sqlite如此慢(〜2 q/s)?
在我的一台服务器上(I7 Ivy Core,32 GB RAM,Debian 6 @ 64bit,php 5.4.10),我经历了SQLite的插入非常慢.以下测试程序报告仅 2.2插入/秒(插入30行的14秒). unlink("test.db"); $db = new PDO('sqlite:test.db'); $db->exec("CREATE TABLE test (dummy INT)"); $count = 30; $t = microtime(true); for ($i=0; $iexec("INSERT INTO test VALUES ($i)") or die("SQLite error: ".$db->errorInfo()[2]."\n"); } $elapsed = microtime(true)-$t; echo sprintf("%d inserts in %.3f secs (%.1f
0 2023-05-30
编程技术问答社区
laravel中没有找到sqlite的pdo异常驱动程序
我运行php artisan migrate命令时我得到: [PDOException]找不到驱动程序. 我将我的默认数据库作为sqlite,并使用php -i命令检查了是否有用于sqlite的PDO驱动程序.我无法理解我的问题. 解决方案 您的系统缺少php SQLite安装. 使用: 安装它 sudo apt-get install php7.0-sqlite 然后重新启动您的Apache Server sudo /opt/lampp/lampp restart 其他解决方案 您需要在服务器上安装PDO 或您只需在php.ini配置文件中取消以下行. 要查找php.ini文件,您可以运行php-config向您展示其位置. 从中删除注释字符; : ;extension=pdo_sqlite to : extension=pdo_sqlite 最后,保存更改并重新启动您的服务器. 其他解决方案 对于使
0 2023-05-30
编程技术问答社区
php -sqlite vs sqlite3
我已经使用SQLite(2.8.17)制作了Web应用程序,我现在才发现有一个sqlite3.在制作Web应用程序时,它以某种方式引起了我的注意,这可能是由于缺乏PHP功能的文档. 我想知道,使用sqlite3比sqlite有什么好处?它更快吗? 解决方案 sqlite2内部将每个值存储为字符串,无论其类型如何. 升级到sqlite3肯定会缩小数据库大小,因为数字和斑点以其本机格式存储,这可能会使事情运行速度更快. 我认为的另一个大优势是,SQLite的最新版本(从3.6.23开始)支持外国钥匙. 由于您使用的是PHP,我建议您查看 pdo .如果您需要更改应用程序的DBM ,它可能会有所帮助 其他解决方案 此文档从sqlite.org网站: http://www.sqlite.org/版本3.html 它不是在谈论性能,而是差异.无论如何,我个人建议使用最新和最出色的版本3(请参阅改进的并发,始终适合Web应用程序).
0 2023-05-30
编程技术问答社区
sqlite不起作用
我知道,当我们安装PHP时,它会自动安装SQLite.否则,我们需要启用它.正确吗? 我已经在本地服务器中安装了PHP.当我执行启用SQLite的phpinfo时.仍然无法使用SQLite.以下是pdo_sqlite 的行. PECL模块版本1.0.1 $ id: pdo_sqlite.c,v 1.10.2.6 2006/01/01 12:50:12狙击Exp $ sqlite库 3.3.6 从中,我必须做的任何事情.请回复... 解决方案 尝试查看您是否已尝试打开的数据库读取/写入访问权限.我猜这将解决问题.
0 2023-05-29
编程技术问答社区
使用PDO在SQLite中检索单一(唯一)行的最简单方法
我有这个pdo $stmt = $db->prepare('SELECT * FROM channels WHERE id=:id'); $stmt->bindValue(':id', $id, SQLITE3_INTEGER); $result = $stmt->execute(); 现在,使用$row['column_name']? 访问该行的最简单方法是什么 我知道,确保查询只会返回一排,因为不可能拥有相同的id的1行超过1行,因此我希望使代码尽可能简单地访问该行. 我在网上看到的示例很漫长而复杂,使用循环循环穿过行等. . 解决方案 应该像 一样简单 $row = $stmt->fetch(PDO::FETCH_ASSOC); 您所见过的示例可能更像 while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ... 因为它们旨在处理多行的查询结果.但是,如果您知道只有一排,就可以放弃循环.当然,这是
0 2023-05-29
编程技术问答社区
使用PHP在SQLite中实现SQLAES加密
是否可以使用PHP将SQL AES_ENCRYPT/AES_DECRYPT实现到SQLite中? 例如,我有一个PHP代码: $SQL = "INSERT INTO parent (Request, Column1, Column2) VALUES ('$Request',AES_ENCRYPT('$Col1','$key'),AES_ENCRYPT('$Col2','$key'))"; 此查询在SQL中起作用,但是可以在sqlite中使用相同的查询? 解决方案 我会说您有2个选项: 在PHP级别加密您的值并将其存储为blobs或base64 strings 加密整个数据库执行以下命令(就像任何其他常规SQL命令一样): pragma Hexkey ='0x_your_key_ine_in_hex_hex_format'.打开数据库以运行选择查询时,请不要忘记做同样的事情. 在这里是官方文档. 其他解决方案 好吧,大约10分钟前,我用Ubuntu 1
0 2023-05-29
编程技术问答社区
SQLITE将ID数组与数据库中存储的数组作为字符串进行了比较
我正在使用sqlite作为我的数据库.在表中,我有一个称为ProjectID的列,它存储了一堆ID(INT)的逗号分隔的字符串.我想创建一种搜索该表以返回所有存储特定ProjectID的行的方法. 我可以将其存储的方式吗?是否有某种方法可以采用一系列ProjectID并创建一个查询,以检查ProjectID列(如果存在这些ID中的任何一个)? ,例如 Return me all rows in the table that have one of these projectIds in it: [1,2,3,4] Table: row1 "1,3,4" row2 "1" row3 "5,6" I should be returned rows 1 and 2. 是否有一种CEVER方法可以采用我的数组并与ProjectID列进行比较,该列是IDS字符串? 解决方案 最清洁的方法是更改​​数据库模式,以便您有一个单独的表包含(refid,projectID
0 2023-05-29
编程技术问答社区