PHP MySQL INSERT not inserting nor any error is displayed

☆樱花仙子☆ 提交于 2020-04-12 21:54:27

问题


I have got this code so insert values into a table in MySQL through PHP. I have tried all the possible Insert syntax, it does not insert the data... this are the codes that i used.

$param = "xyzxyz";
$param1 = "sdfdfg";
$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')";
$result = $mysql->query($sql);
if($result)
   echo "successful";
else
   echo mysql->error;
if(mysql->errno==0)
   echo "successful"
else
   echo mysql->error;

I even tried the following sql syntax

"INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param1','$param1')";

"INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('$param1','$param1')";

and i tried several other none of them inserts anything into the table. and this is the table in MySQL;

trail

User_Name varchar(35)
Quiz_ID varchar(35)

It does not insert anything nor does it display any error. And I have the correct DB connection because i am able to Select from the table. Its just the insert that is tricky.

Any help would be much appreciated.

Thanks


回答1:


Just a note if someone is running on similar problems:

I had a similar issue --- Insert query working on PHPMyAdmin but not working on PHP and not issuing any errors (result was true all the time).

The reason is that I was starting a transaction but forgetting to commit it...

$mysqli->autocommit(FALSE);

$mysqli->query( "START TRANSACTION" );

Never forget this:

$mysqli->commit();

It is a silly error, I know, but I was so focused on the query mistery that I forgot the transaction statements a few lines above.




回答2:


Check the mysqli::$errno first.

if(mysql->errno==0)
   echo "successful"
else
   echo mysql->error;



回答3:


What I have done is if you don't have a debugger installed, just have it email you the query. This way you can see what the final query is and if you have access to something like phpMyAdmin try manually running the query and see what happens. Another thing, make sure that you are searching for your inserted record correctly, if you are using a search query because of the number of records make sure the WHERE condition is right, that has burned me a few times.

EDIT Missing symbol around names maybe. I have to run all my MySQL queries like

`nameOfThing`

instead of just nameOfThing

$param = "xyzxyz";
$param1 = "sdfdfg";
$sql = "INSERT INTO `trail` (`User_Name`, `Quiz_ID`) VALUES ('".$param."','".$param1."')";
$result = $mysql->query($sql);
if($result)
   echo "successful";
else
   echo mysql->error;
if(mysql->errno==0)
   echo "successful"
else
   echo mysql->error;



回答4:


FYI, you are inserting $param1 twice.

You also don't have a ';' after echo "successful".

I'd suggest you clean up the code example, and try things again, and let us know.

Things to clean up

  1. $sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('$param','$param1')"; You don't need to concatenate the variables in a string concatenate, you can interpolate. However, you actually should use PDO with a prepared statement to avoid the potential for SQL injection.
  2. Add that missing ;
  3. put that first check of if(mysql->errno==0) in (unless you are going to switch to PDO for this stuff).
  4. Fix mysql->error to be mysql->error()
  5. Maybe some other things from the comments.



回答5:


Well, if the following code produce no error and shows 1 affected row, most likely you are looking for the result in the wrong database.

ini_set('display_errors', 1);
error_reporting(E_ALL);

$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('testing','1')";
$mysql->query($sql);
var_dump($mysql->error,$mysql->affected_rows);



回答6:


My tables were InnoDB tables and when i changed my tables to MyISAM the insert worked fine. Well i have never encountered this problem before. Well that did the trick for the time being.

If i want to use InnoDB engine for transactions? How can i get php to be able to insert values in InnoDB table? Any one got any suggestion? And i am using WAMP server and the MySQL is version 5.5.24. And i did change the InnoDB conf in my.ini but that did not seem to work either?




回答7:


try this

$param = "xyzxyz"; 
$param1 = "sdfdfg"; 
$sql = "INSERT INTO trail (User_Name, Quiz_ID) VALUES ('".$param."','".$param1."')"; $result = $mysql_query($sql); if($result){ echo "successful";} else { echo " not successful;}



来源:https://stackoverflow.com/questions/14226154/php-mysql-insert-not-inserting-nor-any-error-is-displayed

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!