mvn release:prepare可以提交一些文件(没有pom.xml)吗?
在My MultiModul项目中,我使用prepareGoals配置了rlease插件,以更改sql文件中的Version.
<preparationGoals>clean verify org.codehaus.mojo:build-helper-maven-plugin:1.5:parse-version com.google.code.maven-replacer-plugin:replacer:1.5.0:replace</preparationGoals>
Run Code Online (Sandbox Code Playgroud)
一切正常,但更改的SQL文件将不会被提交.
sql文件位于父文件夹的子目录中.没有pom.xml
我正在尝试准备一个mysqli查询,但它无声地失败而没有给出任何错误.
$db_hostname = "test.com";
$db_database = "dbname";
$db_username = "db_user";
$db_password = "password";
$db = new mysqli($db_hostname,$db_username,$db_password,$db_database);
$q = "INSERT INTO Members (`wp_users_ID`,`MemberID`,`Status`,`MiddleName`,`Nickname`,`Prefix`,`Suffix`,`HomeAddress`,`City`,`State`,`Zip`,`ExtendedZip`,`BadAddress`,`SpouseFirstName`,`SpouseMiddleName`,`HomePhone`,`CellPhone`,`WorkPhone`,`WorkPhoneExt`,`OfficePhone`,`OfficePhoneExt`,`Pager`,`Fax`,`Company`,`CompanyType`,`OfficeAddress`,`OfficeAddress2`,`OfficeCity`,`OfficeState`,`OfficeZip`,`OTYPECO`,`OSTAG`,`UPCODE`,`Region`,`Department`,`Classification`,`Retired`,`Industry`,`Comments`,`Officer`,`OfficerType`,`OfficerTitle`,`OUNIT`,`ReceiveEMagazine`,`CD`,`SD`,`AD`,`isOrganization`,`DEL`,`Dues`,`DataSource`) VALUES ((?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?));";
$stmt = $db->prepare($q);
if ( false === $stmt ) {
echo "<pre>";
print_r( $db );
echo "</pre>";
mysqli_report(MYSQLI_REPORT_ALL);
echo mysqli_error();
}
Run Code Online (Sandbox Code Playgroud)
实际显示任何内容的唯一部分是print_r($ db):
mysqli Object
(
[affected_rows] => -1
[client_info] => 5.1.73
[client_version] => 50173
[connect_errno] => 0
[connect_error] =>
[errno] => 0
[error] =>
[error_list] => Array
(
)
[field_count] => 1
[host_info] => …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PEP 3115中描述的"有序类" (即,可以按声明的顺序访问其成员的类).给出的实现是
# The custom dictionary
class member_table(dict):
def __init__(self):
self.member_names = []
def __setitem__(self, key, value):
# if the key is not already defined, add to the
# list of keys.
if key not in self:
self.member_names.append(key)
# Call superclass
dict.__setitem__(self, key, value)
# The metaclass
class OrderedClass(type):
# The prepare function
@classmethod
def __prepare__(metacls, name, bases): # No keywords in this case
return member_table()
# The metaclass invocation
def __new__(cls, name, bases, classdict):
# Note …Run Code Online (Sandbox Code Playgroud) $ fields是一个打印后获得如下值的数组:
Array ( [first_name] => Nisse [last_name] => Example [ssn] => 198306205053 [address] => Stockholm, Sverige [phone_number] => 54654987321546 [latitude] => 55.717089999999999 [longitude] => 13.235379 )
Run Code Online (Sandbox Code Playgroud)
我从我的数据类中调用更新函数,如下所示:
DataManager::update_user($fields, $user_data['id'];
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:参数未在... filetext中定义
我已经检查了其他几个类似的线程,但我想我在这里遗漏了一些基本概念,因为我仍然无法找到答案.据我所知,我的数组中有7个和7个项目,如果我定义了所有值,我可以在SQL工作台中完美地运行它,即:
UPDATE users SET first_name = 'Kalle', last_name = 'Anka', ssn = 242345234, address = 'Stockholm', phone_number = 53423434, latitude = 17.189889231223423423424324234, longitude = 109.234234 WHERE id = 4
Run Code Online (Sandbox Code Playgroud)
我已经尝试了PDO预处理语句,其中$ user_id设置为特定值,也没有纬度/经度参数.
如果我忘记任何重要信息,只需指出它,我就会明白.地址是varchar,lat/long是DB btw中的浮点数.使用MYSQL.
功能如下:
public static function update_user($fields, $user_id)
{
$db = self::_connect();
$st …Run Code Online (Sandbox Code Playgroud) 我有这个sql文件:
USE mydb;
DROP PROCEDURE IF EXISTS execSql;
DELIMITER //
CREATE PROCEDURE execSql (
IN sqlq VARCHAR(5000)
) COMMENT 'Executes the statement'
BEGIN
PREPARE stmt FROM sqlq;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
当我尝试运行它时
#cat file.sql | mysql -p
我明白了
ERROR 1064 (42000) at line 6: 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 'sqlq;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; …Run Code Online (Sandbox Code Playgroud) 经过无休止的测试不同方面,我已经确定PDO连接有效(我可以运行一个简单的查询并显示结果),我已经确定该语句已成功准备,并且值正确绑定.由于某种原因,该语句将不会执行.只是为了可爱,我已经尝试删除所有绑定变量并执行静态查询,这也无济于事.
码:
$dbh = new PDO( "mysql:host=localhost;dbname=".$GLOBALS['data_name'], $GLOBALS['data_user'], $GLOBALS['data_pass'] );
$dbh->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$sth = $dbh->prepare( "SELECT * FROM :table WHERE :field = :value" );
if( $sth != false ) TCDebug( 'prepared' );
if( $sth->bindValue( ":table", $table ) ) TCDebug( "table true" );
if( $sth->bindValue( ":field", $field ) ) TCDebug( "field true" );
if( $sth->bindValue( ":value", $value ) ) TCDebug( "value true" );
$flag = $sth->execute();
if( $flag === true ) {
TCDebug( 'flag = true' );
} else if( …Run Code Online (Sandbox Code Playgroud) 正如标题所说,未调用onPrepared()重写方法.
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp){
if (mp.equals(mediaPlayer)) isReady_mediaPlayer = true;
Log.e("I", "Media player has been loaded to memory !");
}
});
mediaPlayer = MediaPlayer.create(this, R.raw.my_sound_mp3);
Run Code Online (Sandbox Code Playgroud) 我试过了:
SET @user = 'foo@localhost';
SET @pass = 'bar';
SET @sql = 'CREATE USER ? IDENTIFIED BY ?';
PREPARE stmt FROM $sql;
Run Code Online (Sandbox Code Playgroud)
我得到错误
ERROR 1064 (42000): 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 '? IDENTIFIED BY ?'
Run Code Online (Sandbox Code Playgroud)
我还尝试了多种方法来定义变量,但还是没有运气。
SET @user = "'foo'@'localhost'";
SET @sql = 'CREATE USER ? IDENTIFIED BY ?';
Run Code Online (Sandbox Code Playgroud)
乃至
SET @user = 'foo';
SET @host = 'localhost';
SET @sql …Run Code Online (Sandbox Code Playgroud) 根据经验,并且不断被告知使用准备好的语句和绑定参数的好处,我在代码中不断使用这两种技术,但是我想确切地了解这两种技术的用途:
根据我对准备好的陈述的理解:
$sql = "SELECT * FROM myTable WHERE id = ".$id;
$stmt = $conn->prepare($sql);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
前面的代码应该使用我建议的查询在数据库中创建一种缓冲区。现在根据我的理解(我可能是非常错误的),前面的代码是不安全的,因为字符串$sql可以是任何内容,具体取决于$id实际情况,如果$id= 1; DROP TABLE myTable;--,即使我有准备好的语句,我也会插入恶意查询。
根据我的理解,这是绑定我的参数的地方。如果我执行以下操作:
$sql = "SELECT * FROM myTable WHERE id = :id";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
数据库应该事先准确地知道sql语句的所有部分:
SELECT这些列:* FROM myTable和WHERE id =“用户输入的变量”,如果"a variable that was input by the user" != a variable,则查询失败。
有些人告诉我我的理解是正确的,而另一些人则告诉我这是错误的,如果我错了、正确或遗漏了什么,有人可以告诉我吗?并根据您的需要进行详细说明,非常感谢所有反馈!
我想在过程中进一步使用从选择中获取的值,然后执行,但不知道如何执行。
作为测试,我编写了以下内容,但无法将v_1,v_2或v_3变量用于进一步的逻辑,因为它们不像我期望的那样接受值1,2和3。
DROP PROCEDURE IF EXISTS MPT_testing; DELIMITER // CREATE PROCEDURE MPT_testing() READS SQL DATA BEGIN
DECLARE v_1 INT; DECLARE v_2 INT; DECLARE v_3 INT;
SET @sql=CONCAT('SELECT 1,2 into v_1, v_2'); PREPARE s1 FROM @sql; EXECUTE s1; DEALLOCATE PREPARE s1;
SET v_3 = v_1 + v_2;
SELECT v_3;
END //
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
谢谢,狮子座