草庐IT

PHP 将旧的 mysql_query 更改为 PDO

我的代码中有一些旧的mysql_query查询,我想将其转换为PDO,但很难开始工作。我的原始代码是:mysql_query("UPDATEpeopleSETprice='$price',contact='$contact',fname='$fname',lname='$lname'WHEREid='$id'ANDusername='$username'")ordie(mysql_error());现在我正在尝试:$sql="UPDATEpeopleSETprice='$price',contact='$contact',fname='$fname',lname='$lname'WHE

php - 我如何在mysql中查询两个不同的表

如果第一个查询为NULL,我如何验证两个查询继续第二个查询?第一个查询:SELECTmax(logs)aslogs,idFROMtable1WHEREmessageNOTLIKE"[SYSTEM%"第二个查询:SELECTmax(logs)aslogs,idFROMtable2WHEREmessageLIKE"[SYSTEM%" 最佳答案 我认为你应该看看你的解释。因为对数据库的查询次数更少-更好。在这种情况下,您应该使用联合:SELECTmax(logs)aslogs,id,'table1'typeFROMtable1WHEREm

php - 如何处理多个表而不获取重复数据? (MySQL/PDO)

我正在尝试创建一个可以容纳大约1000支枪的枪支网站。这不是很多数据库条目,但我试图让数据库尽可能轻。我已经创建了五个表,牢记规范化,但我在将数据放入一个查询中的所有五个表中时遇到了问题。我的数据库结构如下:+-----------------++-----------------++-----------------++-----------------+|make+|model||image||type|+-----------------++-----------------++-----------------++-----------------+|PK|make_id||P

php - 使用 PHP PDO 准备语句和 MySQL 选择字段为空的行

我一直在将应用程序转换为使用PDO准备语句而不是mysqli,我遇到了一个奇怪的问题。我在数据库中有一些记录,预计其中一个字段将为空。不是“null”(字符串)或“”(空字符串),而是NULL。我动态构建查询,所以过去当我在对象中遇到空变量时,我会像这样构建查询:WHEREfieldNameisnull;并且当字段为空时会得到预期的结果。现在使用PDO,我的查询不会返回任何结果,也不会收到任何错误。它只是没有返回我期望的记录。当我回应构建的查询并直接在MySQL中运行它们时,我得到了预期的结果,但在应用程序中没有返回任何结果。我尝试过的一些事情包括构建如下所示的查询:WHEREfiel

php - PDOException 语法错误或访问冲突 1142,当创建引用其他 View 的 View 时

我正在尝试在PHP(特别是Laravel)中创建一个MySQLView,但我遇到了一个奇怪的错误:[PDOException]SQLSTATE[42000]:SSyntaxerrororaccessviolation:1142ANYcommanddeniedtouser'user'@'localhost'fortable'/tmp/#sql_475_0'直接在MySQL中运行创建语句可以正常工作。如果我删除View的连接,那么一切正常。用户具有完全权限(GRANTALL)。广泛的谷歌搜索没有返回任何类似的东西。我的代码在下面,稍微简化了,在运行第4条语句创建jobs_view时产生了错

PHP、MySQL - 获取从单个 JOIN 返回的多个可识别行?

我有三个表,比如:*table1*id|val1|val2|val3|val4|val51|...|...|...|...|...2|...|...|...|...|...3|...|...|...|...|......etc和*table2*id|som1|som21|...|...2|...|...3|...|......etc和*table3*id|col1|col21|...|...2|...|...3|...|......etc第三个表中的col2将始终包含来自val3、val4或val5来自第一个表。第二个表只是为了完整性而包含在问题中,而不是问题。我的查询如下:$db=n

php - PDO fetchall() 性能注意事项?

在阅读了一些关于PHP的PDOfetchall()函数对性能影响的文章后,我很好奇是否有另一种方法可以在不调用fetchall().解释一下,大多数人都同意fetchall()往往是资源密集型的。就我而言,我认为这不会是一个太大的问题。是的,我必须从我的数据库中提取整个表并将其显示给用户,但它最多大约有100行;我认为这不会成为问题。但假设,如果我需要提取100,000行,什么是更优化的解决方案? 最佳答案 假设,如果您需要在单个响应中输出所有100,000行,您应该将PDO::MYSQL_ATTR_USE_BUFFERED_QUE

php - 使用 PDO 向表中插入大量变量

我有一个包含大约25个输入字段的大表单。我试图将它们插入到我的表中,而我知道的唯一方法是使用以下...$count=$dbh->exec("INSERTINTOdirectory(field1,field2)VALUES(':value1',':value2')");因为我有这么多的帖子变量,有没有比在我的查询中输入每个人更好的方法呢? 最佳答案 动态准备好的查询您可以从$_POST数组动态构建查询:但是,永远不要相信用户输入,这意味着您不能相信$_POST中的数据会包含有效的列名。1。清理帖子数据您可以定义一个列入白名单的列名数组

php - MySQL 更新查询 - 竞争条件和行锁定会遵守 'where' 条件吗? (php, PDO, MySQL, InnoDB)

我正在尝试建立一个先到先得的模型销售页面。我们有n个相同类型的项目。我们希望将这n个项目分配给提出请求的前n个用户。每个项目对应一个数据库行。当用户按下购买按钮时,系统会尝试查找尚未售出的条目(reservationCompleted=FALSE)并更新用户ID并设置reservationCompleted为真。由于我使用的数据库引擎是InnoDB,我知道有一个内部锁定机制不允许两个进程在同一行上同时进行更新。我的问题是,如果我使用的语句如下,如果两个请求同时到达,这是否会导致不同的用户被分配到同一行?$query="UPDATEavailable_itemsSETassignedPh

php - PDO - 使用表前缀

我喜欢为我的表添加前缀,以防我需要将应用程序安装到只有一个数据库的主机上。我想知道是否有一种使用PDO类处理表前缀的简单方法?目前,我不得不覆盖我自己的数据库中的每个方法,将%p替换为前缀,然后调用super方法。它可以工作,但它并不漂亮! 最佳答案 扩展PDO类可能是最好的选择。classMyPDOextendsPDO{protected$_table_prefix;protected$_table_suffix;publicfunction__construct($dsn,$user=null,$password=null,$d