SQL Bound variables error - mysql

I'm getting the error in my code. I'm sure this means there is something wrong with the column=:variable section of my code, but I've gone over it and can't see what's wrong.
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in F:\...
Here is the code (long first line):
$stmt = $dbh->prepare("UPDATE item_list SET quantity=:quantity, new_price=:newprice, image_link=:image_link, market_hash_name=:markethashname, last_update='1000-01-01 00:00:00', is_tradable='TEST', old_price=:oldprice WHERE item_name=:itemname AND (image_link IS NULL OR quantity IS NULL OR new_price IS NULL OR market_hash_name IS NULL OR last_update IS NULL OR is_tradable IS NULL OR old_price IS NULL)");
$sql->bindParam(':quantity', $json2->quantity);
$sql->bindParam(':newprice', $json2->lowest_price);
$sql->bindParam('image_link', $image_link_full);
$sql->bindParam(':markethashname', urlencode($mydata->market_hash_name));
$sql->bindParam(':oldprice', $json2->lowest_price);
$stmt->bindValue(':itemname', $mydata->market_name);
$stmt->execute();
EDIT: image_link needed to be :image_link, still getting the same error
EDIT 2: Had a lot wrong, was using two names $sql and $stmt, using bindValue instead of bindParam

you are missing a colon ':' before the 'image_link' in the bindParam statement.

Related

Django subquery pass extra workaround distinct since mysql

I am trying to prepare subnet=adress/netmask for presentation, and start_ip and end_ip for filtering purpose under lifs qs. then I want to use subquery to cut of single interface as vserver may have multiple. Problem is that I can't pass extra field generated in lifs queryset.
lifs = (NetworkLif.objects.filter(vserverid=OuterRef('pk'))
.annotate(network=Concat('address', Value('/'), 'netmasklength', output_field=CharField()))
.extra(select={'start_ip': "INET_NTOA(INET_ATON(address) & 0xffffffff ^ ((0x1 << ( 32 - netmasklength) ) -1 ))"})
.extra(select={'end_ip': "INET_NTOA(INET_ATON(address) | ((0x100000000 >> netmasklength ) -1 ))"})
.order_by('network')
)
queryset = (Vserver.objects.filter(type='DATA')
.exclude(name__endswith='-mc')
.annotate(subnet=Subquery(lifs.values('network' )[:1]),
#.annotate(start_ip_address=Subquery(lifs.values('start_ip')[:1]))
#.annotate(end_ip_address=Subquery(lifs.values('end_ip')[:1]))
.values('id', 'clusterid__name', 'name', 'state', 'nfsenabled', 'cifsenabled', 'ldapclientenabled', 'dnsenabled', 'subnet', )#'start_ip_address')#, 'end_ip_address' )
.order_by('id')
)
getting this error, I guess this is becuase evaulation logic
raise FieldError("Cannot resolve expression type, unknown output_field")
django.core.exceptions.FieldError: Cannot resolve expression type, unknown output_field
is there any workaround? I know in postgresql distinct('name') would fix my problem. unfortunetelly ActiveIQ is running on mysql.

Command raised an exception: OperationalError: near "<": syntax error sqlite3 discord.py

cursor.execute(f"UPDATE blackasjackas SET pirmas_korta = {pirmas_korta} WHERE userid={ctx.author.id}")
I'm having a problem with this line, it's giving me the operationalerror near "<" and I can't seem to figure out how to fix it
pirmas_korta returns a string "<:2H:804013503354634280>"
I'm not a python specialist, but SQL-standart requires strings to be apostrophed, so since pirmas_korta is some kind of a string value, update statement should look like the following
f"UPDATE blackasjackas SET pirmas_korta = '{pirmas_korta}' WHERE userid={ctx.author.id}"

Mysql error Invalid parameter number: parameter was not defined

This is my code. I'm unable to execute it.
This is the error message I get on the $db->execute(); line:
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined'
$query = "UPDATE gateway_devices "
."SET coin_lat=:coin_lat, coin_lng=:coin_lng"
."WHERE nick_name=:nick_name AND gateway_id=:g_id AND device_id=:d_id";
$db->query($query);
$db->bind(':coin_lat', $coin_lat);
$db->bind(':coin_lng', $coin_lng);
$db->bind(':nick_name', $nick_name);
$db->bind(':g_id', $g_id);
$db->bind(':d_id', $d_id);
$db->execute();
all i had to do was add a space on line 2 before closing the double quote.
this is how the query looks like before and after adding the whitespace.
before - "UPDATE gateway_devices SET coin_lat=:coin_lat, coin_lng=:coin_lngWHERE nick_name=:nick_name AND gateway_id=:g_id AND device_id=:d_id"
after - "UPDATE gateway_devices SET coin_lat=:coin_lat, coin_lng=:coin_lng WHERE nick_name=:nick_name AND gateway_id=:g_id AND device_id=:d_id"

How do I fix this SQL syntax error, I cannot find it

1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'INSERT INTO ******_sports_teams (******_team_id,
******_content_type_id, ******' at line 2
That is the error I get to this script;
The stars cover the name of the company I work for that I cannot release, but they are all the same word that I know is spelled correctly.
SELECT * FROM `******_sports_teams` WHERE 1
INSERT INTO ******_sports_teams
(******_team_id, ******_content_type_id, ******_content_type_desc,
******_sport_name, ******_sport_confernece, ******_sport_division,
******_sport_city, ******_sport_team)
VALUES
(1,4,'Sports','NBA','Eastern','Atlantic','Boston','Celtics'),
(2,4,'Sports','NBA','Eastern','Atlantic','Brooklyn','Nets'),
(3,4,'Sports','NBA','Eastern','Atlantic','Newy York','Knicks'),
(4,4,'Sports','NBA','Eastern','Atlantic','Philedelphia','76ers'),
(5,4,'Sports','NBA','Eastern','Atlantic','Toronto','Raptors'),
(6,4,'Sports','NBA','Eastern','Central','Chicago','Bulls'),
(7,4,'Sports','NBA','Eastern','Central','Cleveland','Cavaliers'),
(8,4,'Sports','NBA','Eastern','Central','Detriot','Pistons'),
(9,4,'Sports','NBA','Eastern','Central','Indiana','Pacers'),
(10,4,'Sports','NBA','Eastern','Central','Milwaukee','Bucks'),
(11,4,'Sports','NBA','Eastern','Southeast','Atlanta','Hawks'),
(12,4,'Sports','NBA','Eastern','Southeast','Charlotte','Hornets'),
(13,4,'Sports','NBA','Eastern','Southeast','Miami','Heat'),
(14,4,'Sports','NBA','Eastern','Southeast','Orlando','Magic'),
(15,4,'Sports','NBA','Eastern','Southeast','Washington','Wizards'),
(16,4,'Sports','NBA','Western','Southwest','Dallas','Mavericks'),
(17,4,'Sports','NBA','Western','Southwest','Houston','Rockets'),
(18,4,'Sports','NBA','Western','Southwest','Memphis','Grizzlies'),
(19,4,'Sports','NBA','Western','Southwest','New Orleans','Pelicans'),
(20,4,'Sports','NBA','Western','Southwest','San Antonio','Spurs'),
(21,4,'Sports','NBA','Western','Northwest','Denver','Nuggets'),
(22,4,'Sports','NBA','Western','Northwest','Minnesota','Timber Wolves'),
(23,4,'Sports','NBA','Western','Northwest','Oaklohoma City','Thunder'),
(24,4,'Sports','NBA','Western','Northwest','Portland','Trail Blazers'),
(25,4,'Sports','NBA','Western','Northwest','Utah','Jazz'),
(26,4,'Sports','NBA','Western','Pacific','Golden State','Warriors'),
(27,4,'Sports','NBA','Western','Pacific','Los Ageles','Clippers'),
(28,4,'Sports','NBA','Western','Pacific','Los Ageles','Lakers'),
(29,4,'Sports','NBA','Western','Pacific','Pheonix','Suns'),
(30,4,'Sports','NBA','Western','Pacific','Sacremento','Kings'),
(31,4,'Sports','MLB','American','East','Tampa Bay','Rays'),
(32,4,'Sports','MLB','American','East','New York','Yankees'),
(33,4,'Sports','MLB','American','East','Baltimore','Orioles'),
(34,4,'Sports','MLB','American','East','Toronto','Blue Jays'),
(35,4,'Sports','MLB','American','East','Boston','Red Socks'),
(36,4,'Sports','MLB','American','Central','Kansas City','Royals'),
(37,4,'Sports','MLB','American','Central','Minnesota','Twins'),
(38,4,'Sports','MLB','American','Central','Detriot','Tigers'),
(39,4,'Sports','MLB','American','Central','Cleveland','Indians'),
(40,4,'Sports','MLB','American','Central','Chicago','White Sox'),
(41,4,'Sports','MLB','American','West','Houston','Astros'),
(42,4,'Sports','MLB','American','West','Texas','Rangers'),
(43,4,'Sports','MLB','American','West','Los Ageles','Angels'),
(44,4,'Sports','MLB','American','West','Seattle','Mariners'),
(45,4,'Sports','MLB','American','West','Oakland','Athletics'),
(46,4,'Sports','MLB','National','East','New York','Mets'),
(47,4,'Sports','MLB','National','East','Washington','Nationals').
(48,4,'Sports','MLB','National','East','Atlanta','Braves'),
(49,4,'Sports','MLB','National','East','Philedelphia','Phillies'),
(50,4,'Sports','MLB','National','East','Miami','Marlins'),
(51,4,'Sports','MLB','National','Central','St. Louis','Cardinals'),
(52,4,'Sports','MLB','National','Central','Pittsburg','Pirates'),
(53,4,'Sports','MLB','National','Central','Chicago','Cubs'),
(54,4,'Sports','MLB','National','Central','Cincinnati','Reds'),
(55,4,'Sports','MLB','National','Central','Milwaukee','Brewers'),
(56,4,'Sports','MLB','National','West','Los Ageles','Dodgers'),
(57,4,'Sports','MLB','National','West','San Francisco','Giants'),
(58,4,'Sports','MLB','National','West','Arizona','Diamondbacks'),
(59,4,'Sports','MLB','National','West','San Diego','Padres'),
(60,4,'Sports','MLB','National','West','Colorado','Rockies'),
(61,4,'Sports','NFL','NFC','East','Dallas','Cowboys'),
(62,4,'Sports','NFL','NFC','East','New York','Giants'),
(63,4,'Sports','NFL','NFC','East','Philedelphia','Eagles'),
(64,4,'Sports','NFL','NFC','East','Washington','Redskins'),
(65,4,'Sports','NFL','NFC','West','Arizona','Cardinals'),
(66,4,'Sports','NFL','NFC','West','San Francisco','49ers'),
(67,4,'Sports','NFL','NFC','West','Seattle','Seahawks'),
(68,4,'Sports','NFL','NFC','West','St. Louis','Rams'),
(69,4,'Sports','NFL','NFC','North','Chicago','Bears'),
(70,4,'Sports','NFL','NFC','North' ,'Detriot','Lions'),
(71,4,'Sports','NFL','NFC','North' ,'Green Bay','Packers'),
(72,4,'Sports','NFL','NFC','North' ,'Minnesota','Vikings'),
(73,4,'Sports','NFL','NFC','South','Atlanta','Falcons'),
(74,4,'Sports','NFL','NFC','South', 'Carolina','Panthers'),
(75,4,'Sports','NFL','NFC','South','New Orleans','Saints'),
(76,4,'Sports','NFL','NFC','South','Tampa Bay','Buccaneers'),
(77,4,'Sports','NFL','AFC','East','Buffalo','Bills'),
(78,4,'Sports','NFL','AFC','East','Miami','Dolphins'),
(79,4,'Sports','NFL','AFC','East','New England','Patriots'),
(80,4,'Sports','NFL','AFC','East','New York','Jets'),
(81,4,'Sports','NFL','AFC','West','Denver','Broncos'),
(82,4,'Sports','NFL','AFC','West','Kansas City','Chiefs'),
(83,4,'Sports','NFL','AFC','West','Oakland','Raiders'),
(84,4,'Sports','NFL','AFC','West','San Diego','Chargers'),
(85,4,'Sports','NFL','AFC','North' ,'Baltimore','Ravens'),
(86,4,'Sports','NFL','AFC','North' ,'Cleveland','Browns'),
(87,4,'Sports','NFL','AFC','North','Pittsburg','Steelers'),
(88,4,'Sports','NFL','AFC','North' ,'Cincinnati','Bengals'),
(89,4,'Sports','NFL','AFC','South','Houston','Texans'),
(90,4,'Sports','NFL','AFC','South','Indianapolis','Colts'),
(91,4,'Sports','NFL','AFC','South','Jacksonville','Jaguars'),
(92,4,'Sports','NFL','AFC','South','Tennessee','Titans'),
(93,4,'Sports','NHL','NHL','Central','Chicago','Blackhawks'),
(94,4,'Sports','NHL','NHL','Central','Colorado','Avalanche'),
(95,4,'Sports','NHL','NHL','Central','Dallas','Stars'),
(96,4,'Sports','NHL','NHL','Central','Minnesota','Wild'),
(97,4,'Sports','NHL','NHL','Central','St. Louis','Blues'),
(98,4,'Sports','NHL','NHL','Central','Winnipeg','Jets'),
(99,4,'Sports','NHL','NHL','Central','Nashville','Predators'),
(100,4,'Sports','NHL','NHL','Pacific','Anaheim' ,'Ducks'),
(101,4,'Sports','NHL','NHL','Pacific','Arizona','Coyotes'),
(102,4,'Sports','NHL','NHL','Pacific','Clagary','Flames'),
(103,4,'Sports','NHL','NHL','Pacific','Edmonton','Oilers'),
(104,4,'Sports','NHL','NHL','Pacific','Los Ageles','Kings'),
(105,4,'Sports','NHL','NHL','Pacific','San Jose','Sharks'),
(106,4,'Sports','NHL','NHL','Pacific','Vancouver','Canucks'),
(107,4,'Sports','NHL','NHL','Atlantic','Boston','Bruins'),
(108,4,'Sports','NHL','NHL','Atlantic','Buffalo','Sabres'),
(109,4,'Sports','NHL','NHL','Atlantic','Detriot','Red Wings'),
(110,4,'Sports','NHL','NHL','Atlantic','Florida','Panthers'),
(111,4,'Sports','NHL','NHL','Atlantic','Montreal','Canadiens'),
(112,4,'Sports','NHL','NHL','Atlantic','Ottawa','Senators'),
(113,4,'Sports','NHL','NHL','Atlantic','Tampa Bay','Lightning'),
(114,4,'Sports','NHL','NHL','Atlantic','Toronto','Maple Leafs'),
(115,4,'Sports','NHL','NHL','Metropolitan','Corolina','Hurricanes'),
(116,4,'Sports','NHL','NHL','Metropolitan','Columbus','Blue Jackets'),
(117,4,'Sports','NHL','NHL','Metropolitan','New Jersey','Devils'),
(118,4,'Sports','NHL','NHL','Metropolitan','New York','Islanders'),
(119,4,'Sports','NHL','NHL','Metropolitan','New York','Rangers'),
(120,4,'Sports','NHL','NHL','Metropolitan','Philedelphia','Flyers'),
(121,4,'Sports','NHL','NHL','Metropolitan','Pittsburg','Penguins'),
(122,4,'Sports','NHL','NHL','Metropolitan','Washington','Capitals')
you have a dot (.) instead of a comma (,) at the end of the line with ID 47:
(47,4,'Sports','MLB','National','East','Washington','Nationals').
Change it to
(47,4,'Sports','MLB','National','East','Washington','Nationals'),
You have a period at the end of this line:
(47,4,'Sports','MLB','National','East','Washington','Nationals').
It should be a comma
Your error message show us, that two queries does not separated with ;
Just remove Select query, or add ; after it.
Then, double check syntax, or read next error message. You have points instead of comma somewhere.
Your first query retrieve all data from the table. It's:
SELECT * FROM `******_sports_teams` WHERE 1
It should terminated with semicolon before you call next (INSERT) query

Doctrine2 Criteria() generate wrong MySQL query

when I use \Doctrine\Common\Collections\Criteria::create()
use Doctrine\Common\Collections\Criteria;
...
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq('isPublished', 1))
->andWhere(Criteria::expr()->eq('isDeleted', 0));
$this->comments->matching($criteria)
and I getting error:
Message:
An exception occurred while executing 'SELECT t0.id AS id1, t0.rating AS rating2, t0.text AS text3, t0.username AS username4, t0.isPublished AS isPublished5, t0.isDeleted AS isDeleted6, t0.dateCreated AS dateCreated7, t0.userIP AS userIP8, t0.user_id AS user_id9, t0.product_id AS product_id10 FROM product_comments t0 WHERE ((t0.isPublished IS ? AND t0.isDeleted IS ?) AND t0.product_id IS ?)' with params {"1":1,"2":0,"3":1123}:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 AND t0.isDeleted IS 0) AND t0.product_id*IS 1123)' at line 1
The problem is operand 'IS' in where clausule. It is not MySQL operand. (If I paste this query to MySQL terminal, and change "IS" => "=" - is all right)
Why Doctrine genetate such query? Where is the problem?
I solved changing line 91 of Doctrine\ORM\Persisters\BasicEntityPersister
from
Comparison::IS => 'IS %s',
to
Comparison::IS => '= %s',
This is a bug in doctrine fixed by upgrading Doctrine ORM to 2.3.5 or later.
Bug report at http://www.doctrine-project.org/jira/browse/DDC-2471
More discussion on the problem at
https://github.com/doctrine/collections/commit/3db3ab843ff76774bee4679d4cb3a10cffb0a935#diff-757942c669bf6be9910786b2558ad745
Try replacing
expr()->eq('isPublished', 1) and expr()->eq('isPublished', 0) with
expr()->eq('isPublished', '?1')
expr()->eq('isPublished', '?0')