草庐IT

while语句

全部标签

php - 处理 mysqli 准备好的语句时获取的替代方法?

我有以下代码使用准备好的语句执行MySQL查询:$selectStatement="SELECT".implode(",",$allFields);//catselectw/allFields$stmnt=$mysqli->prepare($selectStatement."FROMMusiciansWHEREname=?");$stmnt->bind_param('s',$name);$stmnt.execute();此时,我读过的大部分内容都告诉我,我应该在$stmnt上使用bind_result(),然后使用fetch()。但是,我宁愿得到一个用值填充的数组,而不是像fetch(

php - 我需要做什么来更正这条 SQL 语句?

我有以下表格:products-包含库存中的产品。suppliers-包含供应商详细信息。product_category-包含产品类别的名称。product_suppliers-包含产品和供应商之间的关系。这里重要的可能是product_suppliers,所以这里是列:id//(auto-increment)prod_id//(idofproduct)sup_id//(idofsupplier)preferred//(1ifit'sthepreferredsupplierforthatproduct-0ifnot)cost_per_outer//(thissupplierspric

mysql - 重复 SQL select 语句直到满足条件

请参见下图:要获取Mazda父类别的ID,我将使用以下内容:SELECT`parent_id`FROM`product_categories`WHERE`category_id`=8ifresultisnotequalto0repeatselectstatement在满足条件之前循环SQLselect语句是否被认为是不好的做法?换一种说法;我应该重新设计产品类别表吗?非常感谢您的建议。 最佳答案 是的,在这种情况下,可能需要添加另一个包含最顶层父项的字段。这当然会引入冗余,因为信息已经在表中可用,但有时这是可以接受的性能权衡。您可以

mysqli 准备语句日期和子句之间

$stmt=$mysqli->prepare("SELECTvinFROMjobsWHEREoutbetween?and?");$stmt->bind_param('ss',$startday,$endday);$startday='2013-01-01';$endday='2013-12-31';$stmt->execute();$stmt->store_result();$stmt->bind_result($vin);echo$vin;如果我删除语句之间的部分,上面的代码会抛出这个错误,查询工作。我尝试将列名称括在方括号中,但这也终止了查询,所以我不得不删除它们。似乎问题出在be

php - pdo 定义一个函数,然后在 select 语句中使用它

我的查询有点像这样:CREATEFUNCTIONfunc...;SELECT*FROM....;我正在使用php的PDO,它不允许在$pdo->query()中有超过1个语句,所以我决定我会将查询分成两部分,所以我使用$pdo->exec()执行CREATEFUNCTION查询,然后使用$pdo->query()在select语句上。但是,我在执行select语句时遇到错误,提示FUNCTIONdatabase.funcdoesnotexist。我该如何解决这个问题?当我在phpmyadmin中将它作为单个查询运行时,它工作正常编辑:PHP代码:classMyClass{functio

php - 大型 MySQL INSERT 语句导致 PHP 错误

好吧,我正在制作我的代码,但发生了一些奇怪的事情,我不认为我的代码有错......但它仍然死了我不知道为什么.......出现错误:Error:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'release,media_img,media_video,req)VALUES('games_2','GTAIV','aa','PC,Xb'atline1还有查询:INSERTINTOgamedata(item_id,name

php - 使用 like 语句仅返回出现 x 次的命中

我有一个类似sql的语句:Select*FROMtableWHEREcontentLIKE'%word%'这将返回在列内容中找到“word”的所有行。但是是否可以向该语句添加一个参数,以便我只返回找到“单词”两次(或三次、四次或五次……)次的行。 最佳答案 窃取@thebjorn的评论但使其更通用:$theword="word";//applyappropriateescaping,especiallywithuserinput//youwillalsoneedtomanuallyescape%and_$count=4;$like_

java - MySQL JDBC 驱动程序中的客户端仿真准备语句

我试图了解MySQLJDBC驱动程序中的客户端仿真准备语句是如何工作的。第1部分我在网上看到,对于准备好的语句,关系数据库处理JDBC/SQL查询时涉及四个步骤,它们如下:解析传入的SQL查询编译SQL查询规划/优化数据采集路径执行优化查询/获取并返回数据预执行步骤会编译SQL语句,从而提供预优化。对于服务器端准备好的语句,将对数据库进行额外的往返以预编译SQL语句。问题如果客户端仿真准备语句不往返数据库,它如何执行第3步?还是客户端仿真准备语句的工作方式不同?第2部分我也做了两个实验。实验1-使用一个客户端准备好的语句查询实验2-为多次相同的查询两个实验都显示响应时间等性能有所改善。

mysql if语句中的多个条件

mysql的新手,所以我什至不确定我问的问题是否正确。我正在尝试向if语句添加多个参数。我正在尝试检查两支球队之间的比赛是否是联赛。SELECTvisitorASschool,homeAStemp,vl.leagueidASvleague,hl.leagueidAShleague,if(vl.leagueid=hl.leagueid,1,0)ASleaguematchFROMscheduleLEFTJOINschoolsASvlONvl.id=visitorLEFTJOINschoolsAShlONhl.id=homeWHEREgamedatebetween'2013-01-01'AN

php在stmt准备和执行语句后获取结果

我正在尝试在SQL中执行搜索查询,使用AJAX将div标记更改为搜索结果。但是,我无法使用stmt绑定(bind)参数(为了安全)运行查询。通过打印变量,我发现所有部分都在工作,但我认为参数没有正确搜索,或者get_result使用不正确。我这么说的原因是,在while循环中打印时,输出总是“()”。顺便说一句,它从中提取的表有20多列请看下面的代码:prepare("SELECT*FROMContactsWHEREfirstGroup=?ORsecondGroup=?ORthirdGroup=?");$stmt->bind_param("sss",$q,$q,$q);if($stmt