草庐IT

my_sql_db

全部标签

php - SQL Join问题,如果第二个表为空则返回null

我有2个表。表1(项目):id、name、type表2(project_ratings):project_id,评级有些项目没有评级。SELECT`p`.`id`,`p`.`name`,AVG(pr.rating)FROM(`projects`p)JOIN`project_ratings`prON`p`.`id`=`pr`.`project_id`WHERE`p`.`type`='group'OR`p`.`type`='user';我想返回所有项目,如果没有任何评级,则返回NULL。此查询仅返回具有评级的那些。我试过左连接、右连接、全连接,还是一样。使用CodeIgniter事件记录:

php - 传递数字变量并防止 SQL 注入(inject)

我有这样的查询:SELECTnameFROMmytableWHEREid=$id其中$id由用户提供。我确实为输入变量添加了斜杠。仅使用(int)$id来防止SQL注入(inject)就足够了吗?或者在将它传递给查询之前,我是否必须使用is_numeric检查$id?已编辑:脚本语言为PHP。 最佳答案 是的,使用(int)或intval()转换变量将确保结果只是一个数字,没有其他字符。这是一种很好的防御SQL注入(inject)攻击的方法,但它当然只适用于数字变量。有关SQL注入(inject)防御方法的更多详细信息,请参阅我的演

php - 在 Amazon Dynamo DB 中编写复杂查询(数学表达式)

我已经从mysql切换到DynamoDB。在mysql中,我使用查询来获取更接近特定纬度和经度的所有用户。查询是SELECT*,SQRT(POW(69.1*(latitude-$latitude),2)+POW(69.1*($longitude-longitude)*COS(latitude/57.3),2))ASdistanceFROMcouponWHEREis_active='Y'HAVINGdistance是否可以像在DynamoDB中那样创建查询。我使用PHP作为我的后端 最佳答案 不,AmazonDynamoDB不提供像这

php - 如何演示二阶 SQL 注入(inject)?

所以我一直在尝试复制二阶SQL注入(inject)。这是我准备的两个基于php的站点的示例模板。我们就称它为选民登记表吧。用户可以注册,然后您可以检查您是否是注册选民。插入.php";$qry=mysql_query($sql_statement,$conn)||die(mysql_error());mysql_close($conn);Echo"Datainsertedsuccessfully";}?>选择.php";$result=mysql_query($sql,$conn);$row=mysql_fetch_row($result);$sql1="SELECT*FROMcana

php - 从表 sql server (php) 获取元数据

我正在尝试从我的数据库(sqlserver)上的表中获取元数据。我执行查询以在SqlManagementStudio上获取该元数据并且它有效但在我执行时在php脚本上显示该错误:$row=sqlsrv_fetch_array($res):“在calc_string_size中遇到意外的SQL类型。”我怀疑问题出在php上查询字符串的构建上,但这不是因为我打印了该查询并且它是正确的。当我在选择(列描述)上添加一个字段时出现问题。有人知道这个问题吗? 最佳答案 你可能有sql_变量查询中的某处。这会引发错误->您必须将特定列转换为VAR

php - ctype_alnum 对抗 SQL 注入(inject)

准备好的语句不允许参数化表名。为了确保无法插入任何代码,我想使用ctype_alnum来验证进入数据库模块的所有表名(删除下划线后),以保护应用程序免受其他部分错误的影响。functioninsert($table){if(!ctype_alnum(str_replace("_","",$table)))thrownewException("Invalidtablename");$sql="INSERTINTO$tableVALUESvalue=:value";#...prepareandexecute}是否存在这不足以抵御的攻击?我在想例如multibytecharacterexpl

php - 我这里的错误是什么,显示 SQL 语法错误?

这个问题在这里已经有了答案:SyntaxerrorduetousingareservedwordasatableorcolumnnameinMySQL(1个回答)关闭8年前。$upper=$this->db->query("SELECT*FROM".DB_PREFIX."settingWHEREkey='ndz_limit_up'");$lower=$this->db->query("SELECT*FROM".DB_PREFIX."settingWHEREkey='ndz_limit_down'");请帮忙。

php - Yii2,如何使用 yii/db/Migration 将当前时间插入日期时间字段?

我正在使用Yii2框架并且正在创建一个迁移文件。在此迁移中,我尝试使用将记录插入表中$this->insert('table_name',['column_name'=>time]);我尝试更新但未成功的列名称是created_at和updated_at字段,它们当前是datetime类型,带有null设置为Yes。我可以将列的默认属性设置为当前时间戳。但是,我不是创建数据库的人,也不愿意修改表方案。我尝试了许多不同的方法来将日期时间字段设置为当前日期时间,但没有成功。附件是我当前代码和当前表方案的两个屏幕截图。提前为新问题道歉。任何帮助将不胜感激,请并谢谢你。

php - 如何解决错误 : SQL authentication method unknown in Laravel-MySql

我使用docker,并且我有一个LaravelFramework5.5.25容器和另一个带有mysqlVer8.0.11forLinuxonx86_64(MySQLCommunityServer-GPL)的容器。在我的dockercompose配置中,我有这个:version:"2"services:mysql:image:mysqlports:-"3307:3306"command:--sql_mode=""所以,当Laravel尝试连接到MySql时,出现了这个错误:SQLSTATE[HY000][2054]Theserverrequestedauthenticationmetho

php - Zend 框架 : How to unset data rows in a Zend_Db_Table_Rowset object

我想遍历存储在Zend_Db_Table_Rowset对象中的数据行,然后删除/取消设置一些行,如果它们不满足某些条件的话。我可以使用toArray()只从对象中获取数据行,然后很容易取消设置我不需要的行。但由于我想保留我的对象以供进一步使用,所以我不想这样做。当然,一种解决方案是调整我的查询以便仅检索我需要的内容,但在这种情况下这是不可能的。至少我不知道怎么做。我尝试了以下方法,但没有用:foreach($rowsetas$key=>$row){if(!$condition==satisfied){unset($rowset[$key]);}}当然它不起作用,因为没有$rowset[