Php 如何使用python在mysql查询中传递变量名

Php 如何使用python在mysql查询中传递变量名,php,python,mysql,sql,Php,Python,Mysql,Sql,如果在字段中给定静态值,则插入Myquery。但如果给定变量名,则引发异常。 我的工作代码 import MySQLdb import datetime db = MySQLdb.connect("localhost","root","pass","selvapractice" ) cursor = db.cursor() sql = "INSERT INTO selva(name) \ VALUES ('Selva') " try: cursor.execute(s

如果在字段中给定静态值,则插入Myquery。但如果给定变量名,则引发异常。 我的工作代码

import MySQLdb
import datetime

db = MySQLdb.connect("localhost","root","pass","selvapractice" )

cursor = db.cursor()

sql = "INSERT INTO selva(name) \
       VALUES ('Selva') " 
try:
   cursor.execute(sql)
   db.commit()
except: 
   print "dffds"
   db.rollback()

db.close()
我的异常代码

import MySQLdb
import datetime

db = MySQLdb.connect("localhost","root","pass","selvapractice" )

cursor = db.cursor()
a="surya"
sql = "INSERT INTO selva(name) \
       VALUES (%s) " %(a)
try:
   cursor.execute(sql)
   db.commit()
except: 
   print "dffds"
   db.rollback()

db.close()
它打印dfffds

如何在查询中给出变量名?如有任何帮助,将不胜感激

试试看

INSERT INTO table_name (name) VALUES ('selva')
试试这个: 请注意,我是如何将变量作为参数传递给execute函数的,这样可以更好地防止sql注入攻击

import MySQLdb
import datetime

db = MySQLdb.connect("localhost","root","pass","selvapractice" )

cursor = db.cursor()
a="surya"
b="male"
sql = "INSERT INTO selva(name, gender) VALUES (%s, %s)"
try:
   cursor.execute(sql, [a, b])
   db.commit()
except: 
   print "dffds"
   db.rollback()

db.close()

完全不是那样的。我检查了它,除了block@Ignacio,我发现了错误,问题是我放了(%s)而不是('%s')。现在我在查询中添加了单引号,效果很好。感谢您帮助确定问题。这不是解决问题的方法。这就是创建不安全系统的方式。您为name提供了静态值。此查询对我有效。我的问题是如何为变量名而不是静态值(selva)插入到表_name(name)值(“$name”)中。谢谢,这很有效。您能举个例子说明在查询中提供一个或多个变量吗?只需用两个变量更新我的示例,这有用吗?