jjzjj

statements

全部标签

PHP PDO Prepared Statement MySQL Count of Select where X LIKE

使用PHPv.5.2.14和PDO-MySQL扩展。我是准备好的陈述的新手。需要创建一个搜索表单(以便用户输入)和一个“选择所有X,其中X喜欢……”的工作查询。代码和结果:$sql='SELECTCOUNT(*)asnum_booksfromt_bookswheretitleLIKE:search_term';//Lateraccessasnum_books$prep=$dbh->prepare($sql);$num=$prep->execute(array(':search_term'=>'%'.$search_term.'%'));$total=$num->fetchColumn(

php - "No data supplied for parameters in prepared statement"

所以我正在重新编写一个脚本以包含准备好的语句。之前它工作正常,但现在我在脚本运行时收到“没有为准备好的语句中的参数提供数据”。这里有什么问题?error;$result=mysqli_query($mysqli,$stmt);if($result===false){echo"Errorenteringdata!";echomysqli_error($mysqli);}else{echo"User$firstnameadded";}?>提前致谢。 最佳答案 您只通过控制字符串“sssd”绑定(bind)了四个参数,但您有很多参数。my

mysql - 问题和查询之间的区别

当我从MySQL控制台检查状态时,它显示104个问题,...并且在MySQL常规日志中它显示18个查询!Q1->Question和Query有什么区别?Q2->对于标准站点,每页[在论坛/社交网络中]的问题和查询的理想限制应该是多少? 最佳答案 根据manual:Queries.Thenumberofstatementsexecutedbytheserver.Thisvariableincludesstatementsexecutedwithinstoredprograms,unliketheQuestionsvariable.It

php - PDO/prep statement/whitelisting/set charset,是否足够安全以防止注入(inject)

我正在从扩展mysql转换为PDO,在阅读了SO和其他地方的各位大师的所有资料后,我还有一些疑虑。我想出了以下内容来解决典型查询的sql注入(inject)问题。我只是想知道这是否足够,或者在我将其复制到我的所有应用程序之前,我可能对白名单有点过头了。我不清楚我是否正确地加入了白名单,即我是否也应该以某种方式逃脱。此外,我不确定是否应该为每个查询模拟setAttribute为false还是只为脚本模拟一次。$link=newPDO("mysql:host=$hostname;dbname=$database;charset=utf8",$username,$password);$lin

php - PDO : Error not caught when executing prepared statement 故障排除

这个问题在这里已经有了答案:WhydoesthisPDOstatementsilentlyfail?(1个回答)关闭1年前。我在使用PDO时遇到了问题,因为没有捕获到错误。代码很简单并且工作得很好,我将包含一个示例以避免混淆:$sql='INSERTINTOsomedatetable(something)VALUES(:something)ONDUPLICATEKEYUPDATEsomething=:something';$values=array(":something"=>$something);try{$stmt=$dbh->prepare($sql);$stmt->execut

java - Statement 中的 executeUpdate(String, int) 方法始终返回 1

谁能告诉我为什么下面的方法(executeUpdate)总是返回1,即使我已指定返回其中生成的key?我想在generatedKey变量中获取生成的key。它适用于使用getGeneratedKeys的PreparedStatement,但我想使用Statement。publicinttestQuery(Connectioncon){intgeneratedKey=0;try{Statementstatement=con.createStatement();generatedKey=statement.executeUpdate("INSERTINTOprofile(fullname)

php - Laravel SQLSTATE[HY000] : General error: 1615 Prepared statement needs to be re-prepared

我最近启动了我的基于Laravel的网站,我没有遇到任何问题,但是40分钟前当我检查它时我得到了这个错误:SQLSTATE[HY000]:Generalerror:1615Preparedstatementneedstobere-prepared(SQL:select*from`users`where`id`=1and`remember_token`=mfjLlbv3fR49TYGAqmUgBSqVVAKmoHhq26ws8rojuXxee5qWcvHrcdoTXs6Wlimit1)为什么会这样?一切都很好,现在突然间我什么也做不了了。 最佳答案

mysql - SQL优化: Four statements into one

我有一个包含一些列的表,其中一个包含我用来运行的时间戳目前有四个单选来计算一个SELECTcount()并返回信息像“超过1周的n行”,“超过2周的n行”,...如何将四个查询转化为一个有望实现的SQL-Statement跑得更快?语句如下所示:SELECTcount(foo_pk)ASoneweekFROMfooWHEREfoo_timstamp 最佳答案 我不是MySql的人,但在SQLServer中我会像这样使用CASE语句:SELECTSUM(CASEWHENfoo_timstamp似乎这个语句在MySql中也可用,所以虽然

mysql - SQL : update statement with dynamic column value assignment

想象一下下面的sql查询:UPDATEMYTABLESETCOL2=(SELECTCOL2+1FROM(SELECTMAX(COL2)FROMMYTABLE)ASX)WHEREIDIN(1,2,3,4,5)假设执行更新前MAX(COL2)为1我的意图是,对于ID=1的更新,COL2更新为“max(COL2)+1”(即2),而对于后续更新,“MAX(COL2)+1”被重新评估,因此对于ID=2、COL2=3和ID=3、COL2=4等...实际发生的是,对于所有行(ID=1,2,3,4,5),COL2的值为2。是否有一种聪明的方法可以在每次更新时“重新评估”MAX(COL2)+1的值?我意

sql - 为了性能优势,我是否应该始终更喜欢使用准备好的 SQL 语句?

我的理解是准备好的语句在服务器上编译一次,从而节省了重复解析、优化等的开销。显然,我应该总是更喜欢使用准备好的语句来运行超过一次。这种方法有什么缺点吗?我正在使用ODBC(libodbc++)从C++到MySQL。 最佳答案 PreparedStatements:Whyusepreparedstatements?Therearenumerousadvantagestousingpreparedstatementsinyourapplications,bothforsecurityandperformancereasons.Prepa