Re: Performance/handling limit on mysqli_real_escape_string() function?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ok, and think now figured out cause of issue with binding etc. - local mySQL server was set to max_packet_length = 1M

And, that's 1Mb, so set it to match production server value of 999M, and then, the following code works - seems like you should assign value to parameter variable after binding it to statement:

$stmnt = $mysqliObj->prepare("update tbl_mysqli_test set b_test = ? where id = 1;");
$stmnt->bind_param("b", $b);
$b = NULL;
$stmnt->send_long_data(0, $fB);
$stmnt->execute();

Did then also use mysqli_statement to retireve value and output it to browser, to test, and it seemed to work, since could open saved/outputted file in paint thereafter, and double check it's dimensions, etc.:

$mysqliObj = new mysqli("localhost", "root", "", "mysql");
$stmnt = $mysqliObj->prepare("select b_test from tbl_mysqli_test;");
$stmnt->execute();
$stmnt->bind_result($bOut);
$stmnt->fetch();
header("Content-Type: image/png");
header("Content-Disposition: attachment; filename=\"test.png\"");
echo $bOut;
$stmnt->close();
$mysqliObj->close();

Jacob Kruger
Blind Biker
Skype: BlindZA
'...fate had broken his body, but not his spirit...'

----- Original Message ----- From: "Jacob Kruger" <jacob@xxxxxxxxxxxxx>
To: <php-windows@xxxxxxxxxxxxx>
Sent: Tuesday, August 13, 2013 5:49 PM
Subject: Re: Performance/handling limit on mysqli_real_escape_string() function?


Also, BTW, if I leave out the blob/binary data field, and use all of that test code, apart from the send_long_data() call, it works fine with integer and varchar fields.

Stay well

Jacob Kruger
Blind Biker
Skype: BlindZA
'...fate had broken his body, but not his spirit...'

----- Original Message ----- From: "Jacob Kruger" <jacob@xxxxxxxxxxxxx>
To: <php-windows@xxxxxxxxxxxxx>
Cc: "Pierre Joye" <pierre.php@xxxxxxxxx>
Sent: Tuesday, August 13, 2013 5:45 PM
Subject: Re: Performance/handling limit on mysqli_real_escape_string() function?


And, here's the current test code:

//start code
$f = fopen("./candles.png", "rb");
$fB = fread($f, filesize("./candles.png"));
fclose($f);
$b = NULL;
$stmnt = $mysqliObj->prepare("update tbl_mysqli_test set b_test = ? where id = 1;");
$stmnt->bind_param("b", $b);
$stmnt->send_long_data(0, $fB);
$stmnt->execute();
var_dump($stmnt);
//end code

And, the results of the error it outputs, and the results of the var_dump function are the following:

Warning: Error while sending STMT_EXECUTE packet. PID=3372 in C:\xampp\htdocs\mysqli\bind.php on line 21 object(mysqli_stmt)#2 (9) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(1) ["field_count"]=> int(0) ["errno"]=> int(2006) ["error"]=> string(26) "MySQL server has gone away" ["sqlstate"]=> string(5) "HY000" ["id"]=> int(1)

Jacob Kruger
Blind Biker
Skype: BlindZA
'...fate had broken his body, but not his spirit...'

----- Original Message ----- From: "Jacob Kruger" <jacob@xxxxxxxxxxxxx>
To: <php-windows@xxxxxxxxxxxxx>
Cc: "Pierre Joye" <pierre.php@xxxxxxxxx>
Sent: Tuesday, August 13, 2013 9:28 AM
Subject: Re: Performance/handling limit on mysqli_real_escape_string() function?


Thanks - looks pretty much exactly what I want to try achieve, so will try modd'ing my code/script and see if works...<smile>

Also nice to maybe use the actual parameter binding for a change instead of just building up sql statement strings using sprintf() etc. - know better practice anyway.

Stay well

Jacob Kruger
Blind Biker
Skype: BlindZA
'...fate had broken his body, but not his spirit...'

----- Original Message ----- From: "Pierre Joye" <pierre.php@xxxxxxxxx>
To: "Jacob Kruger" <jacob@xxxxxxxxxxxxx>
Cc: "php-windows" <php-windows@xxxxxxxxxxxxx>
Sent: Tuesday, August 13, 2013 9:08 AM
Subject: Re: Performance/handling limit on mysqli_real_escape_string() function?


hi!

On Mon, Aug 12, 2013 at 11:24 PM, Jacob Kruger <jacob@xxxxxxxxxxxxx> wrote:
What with trying to store image data in mySQL database, I am saving the results of fread() function carried out using the file handle returned from fopen(), with the "rb" argument to tell it the file is for binary reading.

Either way, for example, this specific image file is a 2.1Mb PNG file, and mySQL server on my local, windows development machine seems to lock up roundabout when I tell it to carry out the mysqli_real_escape_string() function on the value of the variable that now contains the data read from the physically uploaded file, and just wondering if this could be something like a process overload, etc., and whether should just try taking out the string real escaping for now, or whether that's likely to cause problems, or should I try something like splitting the file's data into more manageable size chunks, carry out the string escaping on those chunks one at a time, with even a possible form of pause inbetween, and then re-append them together before writing them to the database, or should I maybe just implement at least a form of file size limit, which might be an issue if the user will insist on certain image sizes, resolutions, etc. etc.?

Thoughts/suggestions?

Not really windows specific, php-database could fit better for this
question but here is what you should do:

https://blogs.oracle.com/oswald/entry/php_s_mysqli_extension_storing

Cheers,
--
Pierre

@pierrejoye | http://www.libgd.org


--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[Index of Archives]     [PHP Home]     [PHP Users]     [PHP Database Programming]     [PHP Install]     [Kernel Newbies]     [Yosemite Forum]     [PHP Books]

  Powered by Linux