20

Here's the problem: I started a swap today to use mysqli. No biggie, just had to change a few statements. Everything went fine, no errors... Except that I can't get it to execute any queries at all. I have double and triple checked my syntax. I even started creating situations where it SHOULD return an error (Trying to get it to INSERT to Tables that don't exist or with values that exceeded column limits or didn't match type) and... nothing. It doesn't return an error, it doesn't write. It WILL complain if parameter one is NOT a mysqli type.

Here's the relevant code:

$con = mysqli_connect("localhost", "root", "","test");

if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$query = "INSERT INTO files VALUES (NULL, 5, 'hello')";
mysqli_query($con, $query);

And nothing. It runs without a problem, but it never writes the record. I can even change the $query to "hdjhkfhhjfkd" and it runs no problem. mysqli_query() just isn't executing, period. The only time I can get it to react is if I change $con to anything else, then it complains that it needs a mysqli type.

Thoughts? THis is driving me bonkers.

GilloD
  • 561
  • 2
  • 6
  • 18
  • have you enabled the mysqli module in the PHP config file. I think it is disabled by default. Have you compiled PHP yourself? What is your configuration? – Rouan van Dalen Feb 21 '10 at 05:29
  • Does mysqli_query() return something? – Marcin Feb 21 '10 at 05:34
  • No, it doesn't return anything for the particular statement. This is just an INSERT. mysqli is enabled as far as phpinfo() is concerned. I'm running the latest version of Zend Community Edition. PHP 5.3, MYSQL 5.0.5 – GilloD Feb 21 '10 at 05:38

1 Answers1

39

Have you checked the return value of mysqli_query()? It returns FALSE if an error occurred. In that case mysqli_error() gives you more information about the error.

<?php
$con = mysqli_connect("localhost", "root", "", "test");
if (mysqli_connect_errno()) {
  printf("Connect failed: %s\n", mysqli_connect_error());
  exit();
}

$query = "INSERT INTO files VALUES (NULL, 5, 'hello')";
echo "<pre>Debug: $query</pre>\m";
$result = mysqli_query($con, $query);
if ( false===$result ) {
  printf("error: %s\n", mysqli_error($con));
}
else {
  echo 'done.';
}
VolkerK
  • 95,432
  • 20
  • 163
  • 226
  • Many thanks! Seems like a rogue syntax error. I finally got it run with a lot of single-quote hunting. – GilloD Feb 21 '10 at 06:54
  • You should set display\_startup\_errors=1 on your development server or keep an eye on the error log. And having some "guaranteed" visual feedback in the portion of the script you have trouble with is also often a good idea. – VolkerK Feb 21 '10 at 08:55
  • For me in a tutorial they has `''` set for the id and not `NULL`. – mjwrazor Aug 30 '19 at 15:37