|
Is it better to use tab lock on the table during the bulk insert?
|
|
|
|
|
Sorry, I don't know. Check the documentation to see what it recommends.
|
|
|
|
|
If you are using a script to initiate the bulk load, at the end of the script start the process for updating.
That is a simple way of synchronizing the processes.
|
|
|
|
|
Both process are different based to the file availability process will kick start. Monthly I am getting deadlock issue when both the files are available at same time by utilizing the same table.
As per my knowledge, I need to set lock/ Isolation level at store procedure to overcome this issue.
|
|
|
|
|
Do one then do the other.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
Hi Could anyone help me with the following code? It was working fine until I inserted a username column in the DB table and edited this to suit (I thought) It gives an HTTP500 error page not working.
<?php
require_once "config.php";
$email = $password = $confirm_password = "";
$username_err = $username = $confirm_username_err = "";
$email_err = $password_err = $confirm_password_err = "";
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty(trim($_POST["email"]))){
$email_err = "Please enter your email.";
} else{
$sql = "SELECT id FROM users WHERE email = ?";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "s", $param_email);
$param_email = trim($_POST["email"]);
if(mysqli_stmt_execute($stmt)){
mysqli_stmt_store_result($stmt);
if(mysqli_stmt_num_rows($stmt) == 1){
$email_err = "This email is already registered.";
} else{
$email = trim($_POST["email"]);
}
} else{
echo "Oops! Something went wrong. Please try again later.";
}
mysqli_stmt_close($stmt);
}
}
if(empty(trim($_POST["username"]))){
$username_err = "Please enter a username.";
} elseif(strlen(trim($_POST["username"])) < 6){
$username_err = "username must have atleast 6 characters.";
} else{
$username = trim($_POST["username"]);
}
}
if(empty(trim($_POST["password"]))){
$password_err = "Please enter a password.";
} elseif(strlen(trim($_POST["password"])) < 6){
$password_err = "Password must have atleast 6 characters.";
} else{
$password = trim($_POST["password"]);
}
if(empty(trim($_POST["confirm_password"]))){
$confirm_password_err = "Please confirm password.";
} else{
$confirm_password = trim($_POST["confirm_password"]);
if(empty($password_err) && ($password != $confirm_password)){
$confirm_password_err = "Password did not match.";
}
}
if(empty($email_err) && empty($password_err) && empty($confirm_password_err)){
$sql = "INSERT INTO users (email, username, password) VALUES (?, ?)";
if($stmt = mysqli_prepare($link, $sql)){
mysqli_stmt_bind_param($stmt, "ss", $param_email,$param_username $param_password);
$param_email = $email;
$param_username = $username
$param_password = password_hash($password, PASSWORD_DEFAULT);
if(mysqli_stmt_execute($stmt)){
header("location: login.php");
} else{
echo "Something went wrong. Please try again later.";
}
mysqli_stmt_close($stmt);
}
}
mysqli_close($link);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
<style type="text/css">
body{ font: 14px sans-serif; }
.wrapper{ width: 350px; padding: 20px; }
</style>
</head>
<body>
<div class="wrapper">
<h2>Sign Up</h2>
<p>Please fill this form to create an account.</p>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group <?php echo (!empty($email_err)) ? 'has-error' : ''; ?>">
<label>Email</label>
<input type="text" name="email" class="form-control" value="<?php echo $email; ?>">
<?php echo $email_err; ?>
</div>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
<label>Username</label>
<input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
<?php echo $username_err; ?>
</div>
<div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
<label>Password</label>
<input type="password" name="password" class="form-control" value="<?php echo $password; ?>">
<?php echo $password_err; ?>
</div>
<div class="form-group <?php echo (!empty($confirm_password_err)) ? 'has-error' : ''; ?>">
<label>Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" value="<?php echo $confirm_password; ?>">
<?php echo $confirm_password_err; ?>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Submit">
<input type="reset" class="btn btn-default" value="Reset">
</div>
<p>Already have an account? <a href="login.php">Login here</a>.</p>
</form>
</div>
</body>
</html>
|
|
|
|
|
500 is a generic error from the server. You'll need to debug it or get the details of the error.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
Thanks for replying ZurdoDev.
I was thinking it had to be something in the prepared statement that I have done wrong but can't figure it out. I ran a query to create the table and columns so assume that must be correct?
|
|
|
|
|
Somewhere you should be able to get the details of the error. I don't do much php but if you aren't seeing the error when you run it then maybe look in the logs.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
and180y wrote:
$sql = "INSERT INTO users (email, username, password) VALUES (?, ?)";
...
mysqli_stmt_bind_param($stmt, "ss", $param_email, $param_username $param_password); Two obvious problems:
You're inserting into three columns, but you've only specified two values:
$sql = "INSERT INTO users (email, username, password) VALUES (?, ?, ?)"; You've only specified types for two parameters, and you're missing a comma between the last two parameters:
mysqli_stmt_bind_param($stmt, "sss", $param_email, $param_username, $param_password);
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thanks for replying Richard.
I've fixed those errors but still having the same issue, it loaded the form once but now just a white page with the error.
|
|
|
|
|
I have played around starting again from the basic code and adding in what I need and checking for errors, all is fine till I put the code below in.
}
if(empty(trim($_POST["email"]))){
$email_err = "Please enter your email.";
} elseif(strlen(trim($_POST["email"])) < 6){
$email_err = "email must have at least 6 characters.";
} else{
$email = trim($_POST["email"]);
}
|
|
|
|
|
if(empty(trim($_POST["email"]))){
If the email variable is blank then calling trim on it will fail. You should change it to:
if(empty($_POST["email"])){
|
|
|
|
|
Working perfect now. Thanks Richard.
|
|
|
|
|
|
Richard, is there an error log generated somewhere for the DB? I get an intermittent fault (loads of folk saying the can't register but I can see some are able to) This is the error that shows on the form so not of much use. lol "Something went wrong. Please try again later".
|
|
|
|
|
Sorry, I don't know offhand. Check the MySQL documentation. I see that you are posting that message in your code. So you need to check why the call to mysqli_stmt_execute failed.
|
|
|
|
|
Thanks Richard,
I edited as you said the other night but wonder if my issue is somewhere in here?
if(empty($_POST["email"])){
$email_err = "Please enter your email.";
} elseif(strlen(trim($_POST["email"])) < 6){
$email_err = "email must have at least 6 characters.";
} else{
$email = trim($_POST["email"]);
}
}
|
|
|
|
|
Thanks Richard, progress made.
There is no error as such, if you try to register with the same email twice (yes I thought that as well) it throws the error I mentioned but isn't telling them the email is already registered. It does for username but the email was the bit I added in.
|
|
|
|
|
Did you not realise that you first need to check whether the email is already registered?
|
|
|
|
|
Hi Richard, thanks.
Everyday is a school day dealing with the humans I do.
|
|
|
|
|
Hi all,
I've done a small database and PHP based web page to be able to track my working hours easily.
Last week a customer asked me how many time in total each month I had spend in one project and I had to get all the times, filter by month manually and sum it all to give him an answer... a matter of 10 minutes, but I want to automate this kind of things...
My question is:
I will have a table that will be able to be grouped by day, week, month, year or not grouped, but then, I have to get the sum of all hours that I worked in my office, the sum of the hours that I worked out of my office, the sum of the hours travelling...
I can only think of doing something like
SELECT sumA,
sumB,
sumC
FROM
(
SELECT sumA,
type,
"0" as sumB,
"0" as sumC
From table1
WHERE type = A
UNION ALL
SELECT sumB,
type,
"0" as sumA,
"0" as sumC
From table1
WHERE type = B
UNION ALL
SELECT sumC,
type,
"0" as sumA,
"0" as sumB
From table1
WHERE type = C
)
AS VIEW1
Is this the way to do it?
I want to show the data in columns:
Hours at the office | hours out of the office | hours travelling
_____________________________________________________________________________________________________
JANUARY | | |
_____________________________________________________________________________________________________
FEBRUARY | | |
_____________________________________________________________________________________________________
MARCH | | |
_____________________________________________________________________________________________________
APRIL | | |
_____________________________________________________________________________________________________
...
And I would like to solve this in the database part, not creating different tables and then working in the PHP area...
Sorry for this way too much generic question, I hope I made it clear enough for you to enlighten me.
Thank you in advance!
|
|
|
|
|
Joan M wrote: And I would like to solve this in the database part, not creating different tables and then working in the PHP area Wrong tools for the jobs, database for servicing your data query and PHP for the presentation.
You could store your queries in a table, relate them to a query/stored proc and expose a title in a combo box for the user to select. Display would need to be an auto generated table to support different result sets.
The problem with this is that you may need to support different filtering parameters and you end up with an entire framework to support the reporting when it is faster and simpler to build a result page and query for each report request.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
hmmmm...
I meant this: I have all the data in the database, create a query and get the results that I show then in the web page using PHP.
I have all the "framework" done already, I can tune the queries easily filtering data, ordering and grouping at will...
But, maybe it would be much easier to create a "view" in PHPMyAdmin (I still don't know if this can be achieved but I'll look for it) and then the queries would be much easier.
After having the view, I would not have to create endless joins to get the data mixed correctly.
|
|
|
|
|
What database are you using?
If it is MS-SQL, then there is a command call PIVOT which will do exactly what you want to do.
|
|
|
|