草庐IT

PDO_SQLANYWHERE

全部标签

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

php - PDO PHP bindValue 不起作用

我知道这个问题已经被问过1000次了,但出于某种原因我继续用头撞墙..这个有效:$sql='SELECTa.eventCode,a.eventTime,a.teamCode,a.playerCode,b.lastName,b.firstName,b.number,a.xCoord,a.yCoord,a.id';$sql=$sql.'FROMeventsa,playersb';$sql=$sql.'WHEREa.regGUIDin('.$regGUID.')and';$sql=$sql.'a.playerCode=b.playerCodeanda.gameCode="'.$game.'"

php - PDO::commit() 成功或失败

PHPPDO::commit()文档指出该方法在成功时返回TRUE,在失败时返回FALSE。这是指beginTransaction()和commit()之间的语句执行成功还是失败?例如,来自文档:$dbh->beginTransaction();$sql='INSERTINTOfruit(name,colour,calories)VALUES(?,?,?)';$sth=$dbh->prepare($sql);foreach($fruitsas$fruit){$sth->execute([$fruit->name,$fruit->colour,$fruit->calories,]);}$

php - "PDO exception: php_network_getaddresses: getaddrinfo failed"更改 DNS 解析器后,数据库在 AWS 上运行

在我们的Laravel5.2应用程序中,我们有一个在AWS上运行的数据库设置,使用多个读取服务器(和多个数据库连接)。晚上,我们将所有网络服务器的DNS解析器更改为GoogleDNS(8.8.8.8和8.8.4.4)。然后,服务器开始吐出这些:PDOException:Exception'PDOException'withmessage'SQLSTATE[HY000][2002]php_network_getaddresses:getaddrinfofailed:Nameorservicenotknown'in/home/forge/studydrive.net/releases/20

PHP、PDO、UTF8 和 MySQL 不玩球

关于UTF-8字符,我真的很努力地试图让PHP通过PDO与MySQL一起玩。我使用php--version得到以下信息:PHP5.3.6(cli)(built:Apr19201113:21:12)Copyright(c)1997-2011ThePHPGroupZendEnginev2.3.0,Copyright(c)1998-2011ZendTechnologies这是来自mysqlcli的欢迎消息:Serverversion:5.1.57Sourcedistribution我将此作为我的数据库连接代码:try{$dbh=newPDO('mysql:host='.$server.';d

php - 在 PDO 查询上设置 group_concat_max_len

我有以下查询:$cases=$conn->prepare("SELECTGROUP_CONCAT(textSEPARATOR'|')astexts,yearFROMcasesGROUPBYyearORDERBYanoDESC");$cases->execute();$cases_result=$cases->fetchAll(PDO::FETCH_OBJ);但有些文字显示不完整所以我必须改变group_concat_max_len的值。我做了如下:mysql_query("SETgroup_concat_max_len=2048");但是不知道如何使用PDO

php - 在 PDO 中绑定(bind) "not null"?

我最近发现您可以在PDO中绑定(bind)空值:$stmt=$db->prepare('SELECT*FROMfooWHEREbar=:bar');$stmt->execute(array(':bar'=>null));$foo=$stmt->fetchAll(PDO::FETCH_OBJ);这将成功地从数据库中获取所有foo,其中bar列为空。但是,我现在想做相反的事情。我想获取bar列为notnull的所有列。我知道我可以简单地将bar=:bar替换为barISNOTNULL。但是,我想避免这种情况,而是通过准备好的语句来完成,因为有时我必须动态构建查询字符串并且必须手动完成会增加

php - 为什么没有捕获到 PDO 异常错误?

我有一个PHP脚本,在SQL查询的语句中有两个故意的拼写错误:try{$stmt=$dbh->prepare("SELECTCOUNT(*)FROMProductWHEREnon-existent_column=?");$stmt->blindValue(1,$id,PDO::PARAM_INT);$stmt->execute();$row=$stmt->fetchColumn();}catch(PDOException$err){var_dump($err->getMessage());var_dump($dbh->errorInfo());}但是,即使在将属性设置为PDO::ERR

php - PDO:多次使用相同的绑定(bind)变量

我遇到了PDO准备语句的问题,如果您需要多次使用相同的绑定(bind)变量,查询将无法验证。例子:$params=array(':status'=>$status,':userid'=>$_SESSION['userid']);$stmt=$pdo->prepare('INSERTINTOtableName(userId,status)VALUES(:userid,":status")ONDUPLICATEKEYUPDATEstatus=":status"');if(!$stmt->execute($params)){print_r($stmt->errorInfo());}编辑:$p