添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

I prefer using the mysqli stmts because of the bind_param function. But the only reason I don't use it all the time is because I haven't found a way to check if the execute() encounters errors. Normally I'd use something like:

$result =$db->query($sql);if (!$result) {//there was an error}

But I can't place the $stmt->execute() into a variable because of object incompatibilities or something. What is a good way to do this?

I typically don't check if the execute method failed (bad practice, i know), but maybe you could try something like this:

$stmt->execute();if($stmt->errno){   //this code will execute if there was an error}

This checks the errno property of the mysqli class. http://www.php.net/manual/en/mysqli-stmt.errno.php

I typically don't check if the execute method failed (bad practice, i know), but maybe you could try something like this:
$stmt->execute();if($stmt->errno){   //this code will execute if there was an error}

This checks the errno property of the mysqli class. http://www.php.net/manual/en/mysqli-stmt.errno.php

yeah good

That was unsuccessful. I did something like this:

$query="SELECT column1, column2 FROM `table` WHERE id=? LIMIT 1";$result=$con->prepare($query);$result->bind_param('s', $_GET['post_id']);$result->execute();$result->bind_result($col1, $col2);if ($result->errno) {header('location:error.php');}else {while ($result->fetch()) {$title = $col1;$post = $col2;}}

The problem was that the conditional with the $result->errno statement in it always returned false, whether the row existed or not.

well according to the documentation in the link i sent you, $stmt->errno returns "An error code value. Zero means no error occurred.". oh oops, i guess my conditional logic was wrong. maybe it should be like this:

if($stmt->errno != 0) {//code to execute if there is an error}

The problem is that $stmt->errno returns 0 whether the query is supposed to return true, or not.As you saw earlier, I am fetching data based on a $_GET variable. If "post_id=1" represents an existent post, errno will return 0. Great! But if I enter "post_id=12" (and there is not a row with an id of 12) then errno will again return 0...ok???

oh so i think what you want is a property that returns how many results are returned. If you send the query a post_id that does not exist, there won't be an error. After you execute the query, you need to call the store_result() method and then check the num_rows property like this:

$stmt->store_result();printf("Number of rows: %d.\n", $stmt->num_rows);

Here is the documentation: http://www.php.net/manual/en/mysqli-stmt.num-rows.php