troubleshooting Question

MySQL - Adding an incremented value to a duplicate string

Avatar of RationalRabbit
RationalRabbit asked on
DatabasesPHP
30 Comments1 Solution149 ViewsLast Modified:
Inserting a title into a table, if it is a duplicate, I need to number it, such as Title Title 2 Title 3, etc. I thought I could just compare the new title with those in the table by getting the length, then doing something like

"SELECT field FROM tablename WHERE LEFT(field,".$Length.") = '$NewTitle'"

then just count the rows and increment to create the new title and store it. Guess that's not legal. Can't seem to find a simple solution. The entries come through an API, so I can't easily ask users to rename a title if it conflicts.

I came up with this, which doesn't work, but I really don't understand why.

Even if this DID work, it would still pose a problem, as, if you have the title "This Title", and you send another title called "This", since you are using the Title string length, you would find everything that starts with the name "This", so it might be your first entry, but gets saved as "This 250".

$NameLength = strlen($DocName);
    SELECT DocName, count(DocName) FROM Pickup GROUP BY DocName HAVING LEFT(DocName,'$NameLength') = '$DocName'";
So, if I have three titles, "Title"; "Title 2"; "Title 3", I thought I could then do

$D = mysql_fetch_array($Result);
$RCount = ($D[count(DocName)]) + 1;
$NewTitle = $DocName.' '.$RCount;
Join the community to see this answer!
Join our exclusive community to see this answer & millions of others.
Unlock 1 Answer and 30 Comments.
Join the Community
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 30 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros